Inspiration
Personal growth often feels lonely, and the tools we use reflect that. I was juggling several apps: one for personal habits, a group chat for challenges with friends, and another for relationship milestones. That app fatigue is why I built Douri.
I wanted self-improvement to feel like a shared journey. Instead of a list of checkboxes, Douri shows a visual metro map where personal goals (Me), social challenges (Together) and a private couple space (Us) live in one place and keep you motivated.
How I built it
To ship a complete app in 4 weeks, I picked tools that let me move fast:
- Mobile app: React Native and Expo, with a custom design system, an animated
JourneyPath, and a flame mascot that reacts to your progress for the day. Available in English, Spanish and French. - Backend: Supabase (PostgreSQL). The app talks to the database directly, protected by row-level security, with triggers and edge functions for the logic that must never be skipped, like completing goals and enforcing plan limits.
- Monetization: RevenueCat handles subscriptions in the Play Store, plus a web-to-app funnel with Stripe checkout. After paying on the web, users open a redemption link and Premium unlocks on their account in the app.
- Engagement: OneSignal push notifications for daily reminders and updates from your partner and groups.
- Web: a static landing page and legal pages hosted on Cloudflare.
Challenges I faced
- Aggressive timeline: building three product layers (personal goals, social challenges and a couple space) in one month meant cutting anything that wasn't essential to the core experience.
- Offline reliability: a check-in has to work at the gym with no signal. The app keeps its data cached on the device and queues updates to sync later, without creating duplicates when a request is retried.
- Balancing privacy: Douri handles public challenges and very personal couple memories. Keeping "Us" fully private while "Together" stays social required careful database policies.
- Store reviews: navigating different review timelines across platforms is an ongoing challenge. Douri is live on Google Play, and the iOS version is submitted and waiting for Apple's approval.
What I learned
- The right tools buy you time: letting Supabase handle auth, data and security let me focus on the experience instead of servers.
- Subscriptions don't have to be hard: RevenueCat unified store and web purchases behind a single "Premium" entitlement, which saved weeks of work.
- Engagement is about timing: a well-timed notification, like telling you your partner just completed a goal, is one of the strongest reasons to come back to the app.
Built With
- cloudflare
- deno
- expo.io
- onesignal
- postgresql
- posthog
- react-native
- revenuecat
- revenuecat-funnels
- stripe
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.