-
-
Login Page for users to Log In or Sign Up
-
Progress page where users can track their streaks and view results, achievements and stats to stay motivated
-
Streak page where users can see their effort and gain satisfaction for maintaining their streak.
-
Content page where user doomscroll our content, where infinite scroll is implemented.
🧠 Inspiration
During our internships in Singapore, we often found ourselves commuting 1–2 hours daily. On those long rides, we noticed how many people (including ourselves) were doomscrolling mindlessly, especially at night. Afterwards, we’d often feel like we wasted time and we realized this is a common global problem.
We wanted to change that.
Our Idea: A microlearning app that transforms how people consume information. It combines bite-sized news, fun facts, and genuinely useful content in a visually engaging format. It helps users stay informed, spark curiosity, and build a habit of meaningful learning without the noise of social media or the guilt of wasted time. Just effortless, addictive knowledge that fits into your day and fuels better conversations.
Our goal is to help users become the most interesting person in the room all while casually doomscrolling on Dopa.
🛠️ How We Built It
Frontend: React Native with Expo + TypeScript
Backend: FastAPI (Python) + Supabase (PostgreSQL, Auth, RLS)
AI-assisted dev: Cursor and Bolt for rapid prototyping
Content pipeline:
OpenAI scripts to generate factual, engaging educational blurbs
Stock videos from Pexels
FFmpeg for stitching, subtitle burning, and format optimization
ElevenLabs for AI voiceovers of text-based facts
Expo AV for video/audio playback, and Zustand for state management
Deployed via Supabase and Expo Go
🧱 Challenges We Ran Into
Time: We all had 9–6pm internships, so all Dopa development happened at night. It was intense — but we stayed committed.
Mobile dev: This was our first time building a full mobile app from scratch. It was a steep learning curve from our usual web stack.
Multimedia: Getting smooth video/audio playback with fast loading and mute toggles was surprisingly hard, especially on React Native.
Scope creep: We had big ideas (friends system, more gamification features, monetization), but had to cut features to meet MVP deadline and prioritized the core learning experience
🎓 What We Learned
The algorithms behind TikTok, Instagram, and YouTube Shorts — and how to implement our own personalized recommendation engine based on topic affinity
How to use AI coding tools like Bolt and Cursor to dramatically speed up product development
How to design content that’s optimized for attention, retention, and bite-sized learning — including auto-generation via OpenAI, ElevenLabs, and FFmpeg
Structuring user personalization systems (topic affinity + smart recommendations)
🏅 Accomplishments that we're proud of
Built a complete mobile app experience from scratch
Designed and deployed a custom content generation pipeline using multiple AI tools
Created a personalized recommendation engine that actually adapts to users
Implemented real-time interaction tracking, streaks, coins, and badge systems
🔮 What’s next for Dopa
Add social features: follow friends, shared learning challenges
Integrate monetization: premium unlocks, ads, and tokenized incentives
Optimize performance for video reels and animations, and make it even more engaging and addictive to scroll
Expand content categories: history, science, life hacks, careers, psychology, and more
💬 Final Thoughts
Even though it was tiring at times, building Dopa was fun, meaningful, and energizing. We built something that genuinely solves a problem we face every day — and we plan to keep working on it.
We’re excited to keep pushing Dopa forward, because we believe this is a better way to learn in the modern world.
Built With
- bolt.new
- cursor-ai
- eas
- elevenlabs
- expo-av
- expo-go
- expo-router
- fastapi
- ffmpeg
- git
- github
- lottie
- lucide-icons
- openai-gpt-4
- pexels-api
- postgresql
- pydantic
- python
- railway
- react-native-gesture-handler
- react-native-haptic-feedback
- react-native-reanimated
- react-native-with-expo
- render
- row-level-security
- supabase
- supabase-auth
- supabase-python-client
- typescript
- zustand

Log in or sign up for Devpost to join the conversation.