Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Dream-to-do
Dream-to-Do: Project Story
Inspiration
Every day, millions of young women save travel posts, bookmark solo travel guides, and dream of bold adventures—but never actually book the trip. Gabby Beckford, a solo travel expert with 50K+ followers, receives daily DMs from women saying: "I want to travel solo but I'm terrified."
The problem isn't lack of information. It's the paralysis between dreaming and doing—the confidence gap, the overwhelm of planning, and the fear of taking that first scary step alone.
We built Dream-to-Do as "Gabby in your pocket"—a coaching app that turns overwhelming travel dreams into confidence-building microwins, one day at a time.
What it does
Dream-to-Do transforms travel dreams into daily actionable goals through a gamified coaching experience:
Core Features
Dream Packs - Curated goal templates (First Solo Trip, Adventure Fund, Bucket List, Glow Up) that break big dreams into 30-day action plans
Scary Actions (Hero Feature) - Our breakthrough feature recognizes that the same action has different fear levels for different people. "Book flight" might be easy for seasoned travelers but terrifying for first-timers. The app:
- Detects scary actions and shows a 🦁 "Brave move" indicator
- Provides pre-action encouragement: "This feels big, and that's OK"
- Celebrates proportionally: Sparkle → Pop → Burst → Fireworks → Spectacular
- Awards "Bravery Badges" for completing scary actions
"Just 2 Minutes" Mode - When users feel overwhelmed, they can complete a tiny step instead:
- "Book flight" → "Look at one flight price"
- "Apply passport" → "Open passport website"
- Earns 5 XP (vs full 20 XP) but maintains momentum
Gabby's Community - Featured posts from Gabby Beckford herself, pinned to the top of the community feed with verified "Creator" badges
Gamification - XP, levels, streaks, and 16 badges that celebrate progress from "First Breath" (opening the app) to "Level 100 Master"
Monetization
- 7-day free trial with full access
- Hard paywall after trial: $2.99/month or $29.99/year (16% savings)
- Progress preview on paywall shows users exactly what they'll lose (actions completed, streak, level, XP)
How we built it
Tech Stack
- Frontend: React Native + Expo (SDK 54) with TypeScript
- Navigation: Expo Router (file-based routing)
- Backend: Supabase (Auth + Postgres + Storage)
- State Management: Zustand
- Animations: React Native Reanimated 4
- Purchases: RevenueCat (react-native-purchases)
- Build: EAS (Expo Application Services)
Architecture Highlights
Authentication Flow
We implemented Google Sign-In via Supabase OAuth with deep linking (dreamtodo://auth/callback). The auth state is persisted using AsyncStorage with automatic session restoration on app launch.
RevenueCat Integration
- SDK initialized on app launch with user ID synced to Supabase UUID
- Products: Monthly ($2.99) and Yearly ($29.99) subscriptions
- Entitlement: "Dream-To-Do Pro" unlocks all features
- Hard paywall enforced via
PaywallGatecomponent that redirects locked users
Database Schema
profiles- User data with personalization fields (intensity preference, time slots)goals- Active Dream Packs with custom milestonesdaily_actions- Scheduled actions with completion tracking and tiny step supportuser_badges- Earned achievements
Scary Actions System Static mapping of fear levels by pack ID and action ID (MVP), with color-coded badges:
- Easy (mint) → Medium (turquoise) → Scary (coral) → Terrifying (purple)
Challenges we ran into
JAS-13: The Identity Mismatch Crisis
Problem: When users signed up with email (e.g., Proton), Google Play Billing still used the device's Google account. Purchases linked to the wrong user—user paid but saw no premium features.
Solution: After 5 failed attempts to sync identities, we implemented a Google-only auth fallback. Removed email signup entirely. Google Sign-In account = Google Play account = Same identity. Not ideal, but shipping is better than perfect.
JAS-15 & JAS-16: The Auth Loop Nightmare
Problem: OAuth callback created an infinite loop—user signs in, returns to app, immediately loops back to welcome screen. WebBrowser.openAuthSessionAsync works in development but never resolves in production builds.
Solution: Deep link handler approach. auth/callback.tsx extracts tokens directly from the URL, sets the Supabase session, and navigates. Single source of truth for OAuth handling.
JAS-17: The Truncated Token Bug
Problem: Passing OAuth callback URL via query parameter (?callbackUrl=...) truncated at & because URL parsers treat it as a param separator. Result: "Invalid callback tokens" error.
Solution: Pass OAuth URL via in-memory store (authStore) instead of query params. Synchronous handoff before navigation. Zero encoding issues.
JAS-18: The Entitlement Mismatch
Problem: RevenueCat dashboard used Dream-To-Do Pro entitlement, but app code checked for premium. Active subscriptions showed as locked.
Solution: Updated lib/purchases.ts to check for both identifiers with fallback logic.
Technical Debt Lessons
- Test production builds early—some features work in dev but fail in release
- WebBrowser is unreliable for OAuth—use deep link handlers for production
- Google Play purchases are fundamentally tied to Google accounts—cannot be decoupled
Accomplishments that we're proud of
1. Scary Actions Feature
This isn't just gamification—it's emotional coaching. Recognizing that fear is the #1 blocker for solo travel and celebrating bravery proportionally is genuinely innovative. The 5-level celebration system (from Sparkle to Spectacular) makes every action feel meaningful.
2. "Just 2 Minutes" Mode
Behavioral psychology in action. When users feel overwhelmed, they can choose a tiny step instead of skipping entirely. It's the difference between "I failed" and "I did something"—critical for building confidence.
3. Shipping Despite Roadblocks
We hit 6 critical production bugs (JAS-13 through JAS-18) in the final 48 hours. Each could have killed the submission. Instead of giving up, we:
- Documented everything in detailed issue files
- Implemented fallback solutions when ideal fixes failed
- Prioritized shipping over perfection
4. Creator-Led Authenticity
This isn't a generic productivity app with travel skin. Every word of copy, every badge name, every celebration message was crafted with Gabby Beckford's voice. The "Gabby in your pocket" positioning is genuine.
5. Complete RevenueCat Integration
From SDK setup to Play Console integration to license testers—every part of the subscription flow works end-to-end in production.
What we learned
Technical Lessons
- RevenueCat + Google Play integration is complex but manageable with proper documentation
- Expo development builds are essential for testing native modules—Expo Go won't cut it
- Deep linking behaves differently in debug vs. production—test early, test often
- Environment variables in EAS builds require explicit configuration—don't assume they'll just work
Product Lessons
- Hard paywalls work for creator-led apps—audiences expect premium quality from trusted creators
- Microwins beat big goals—users need daily dopamine, not just end-goal fantasies
- Fear detection is high-value—acknowledging user anxiety and celebrating bravery builds loyalty
Process Lessons
- Document everything—those JAS issue files saved us when we needed to trace what we tried
- Fallbacks are essential—when the ideal solution fails, have a backup plan
- Shippable > Perfect—we removed email auth entirely rather than miss the deadline
What's next for Dream-to-Do
Immediate Post-Launch (Feb-Mar 2026)
- iOS Launch - Expand beyond Android to capture full market
- Analytics Integration - Full funnel tracking for trial conversion optimization
- Badge Detail Popups - Tap badges to see lore, unlock conditions, and Gabby's personalized messages
Phase 2: AI-Powered Personalization (Mar-May 2026)
- Smart Fear Detection - ML-based behavioral learning (procrastination = fear signal) instead of static mapping
- Adaptive Difficulty - System learns from completion rates and adjusts action difficulty
- Personalized Motivations - AI-customizes Gabby's message tone per user preference
Phase 3: Community & Expansion (May-Jun 2026)
- Buddy Matching - Pair users with similar goals for accountability
- Group Challenges - "Join 50 others saving for Japan trip"
- More Dream Packs - Career change, digital nomad, language learning
Phase 4: Scale (Jul 2026+)
- Creator Marketplace - Other creators can build Dream Packs
- Voice Notes - Actual Gabby voice encouragement (not just written)
- Travel Hub - Notes, links, bookings organizer for trip planning
Built for the BuildDifferent Creator Accelerator
Creator: Gabby Beckford
Developer: Kartik Rustagi
Submission Date: February 12, 2026
Built With
- expo.io
- google-play
- react-native
- revenuecatsdk
- sql
- supabase
Log in or sign up for Devpost to join the conversation.