Inspiration

We were inspired by ambitious people—especially women in travel, career, and self-growth—who have clear dreams but get stuck between inspiration and action. Goals like "Plan my dream trip," "Launch my side hustle," or "Save $1,000" feel big and vague. Without structure, motivation fades and progress stalls.

We wanted to build an app that turns any dream into a 30-day sprint with one small action per day. No overwhelm. No project management bloat. Just a simple system: pick a challenge, do today's task, build a streak, and celebrate progress.

Gabby Beckford's audience—travel-driven, career-focused, growth-minded people—embodies exactly who we built this for.

What it does

  • Challenge Library — Users pick a predefined 30-day challenge (Plan Your Dream Trip, Save $1,000, Launch Your Side Hustle, 30-Day Glow-Up) or create their own custom sprint.

  • Today View — One focused task per day. Users see their sprint title, day number, a motivational prompt, and a one-tap "Mark complete" button. Completing a task triggers confetti and updates the streak.

  • Sprint Dashboard — Progress bar, 30-day completion grid, streak counter, and achievements (7-day streak, 15-day streak, Sprint complete).

  • AI Micro-Actions — Pro users can create custom sprints with AI-generated daily tasks tailored to their title and goal.

  • Pro Subscription — Free users get one active sprint and limited challenges. Pro unlocks unlimited sprints, full challenge library, AI tasks, and a streak saver. Paywall appears when starting a second sprint, selecting a premium challenge, or enabling AI.

  • Guest & Sign-in — Anonymous sign-in to try the app; sign in or create an account to save progress across devices.

How we built it

We built DreamSprint as a React Native (Expo) app with a Supabase backend and RevenueCat for subscriptions.

Frontend: React Native + Expo for iOS and Android, TypeScript, React Navigation (native stack + bottom tabs). We use React Context for auth, subscription, and paywall state.

Backend: Supabase for authentication (email/password and anonymous), PostgreSQL for profiles, sprints, tasks, and challenge templates. Row Level Security ensures users only access their own data. A Supabase Edge Function calls OpenAI to generate 30 micro-actions for Pro custom sprints.

Monetization: RevenueCat SDK with entitlement pro. We integrated react-native-purchases and react-native-purchases-ui for paywall presentation. RevenueCat is configured with the Supabase user ID for cross-platform identity. Paywall triggers are placed at second sprint, premium challenge, and AI feature.

Architecture: AuthContext loads session and profile; SubscriptionContext fetches CustomerInfo and exposes isPro. PaywallContext controls modal visibility. Screens call sprintService for all Supabase operations.

Challenges we ran into

  1. Paywall modal layout — The Paywall modal was initially shown as a centered overlay. When triggered from the Challenges tab, it could appear cramped or cut off on smaller devices. We switched to a full-screen modal (pageSheet on iOS) with ScrollView for a better experience.
  2. Supabase email rate limit — During development, sign-up hit Supabase's default limit (e.g. 2 emails/hour). We improved error handling to show a friendly "Try again later" message when rate limited, and documented workarounds (wait, use guest mode, or configure custom SMTP).
  3. RevenueCat Paywall v2 — The "default" offering initially had no configured paywall in the RevenueCat dashboard, causing a warning. We documented that a v2 Paywall must be created and published in the dashboard, and built a custom entry screen that then calls presentPaywallIfNeeded.
  4. App load performance — Initial bundle was ~4.7s for 1000+ modules. We deferred RevenueCat configuration, lazy-loaded screens (Paywall, CreateSprint, Challenges, Register, Onboarding), and parallelized API calls to improve time-to-interactive.

Accomplishments that we're proud of

  • Full MVP in scope — Auth, onboarding, challenge library, custom sprints, AI micro-actions (Pro), streak tracking, achievements, and RevenueCat subscription flow.
  • Clean UX — Status indicators (On track / In progress), streak hero cards, 30-day progress grid, achievement badges, and guest sign-in prompts on Challenges and Dashboard.
  • RevenueCat integration — Entitlement checks, paywall triggers at the right moments, and a clear separation between free and Pro features.
  • Robust error handling — Rate limit messages, loading states, and non-blocking startup so the app feels responsive.

What we learned

  • RevenueCat — How to configure the SDK with a custom user ID, check entitlements, and present the native paywall. The importance of publishing a Paywall v2 in the dashboard for the default offering.
  • Supabase — Edge Functions for AI, RLS for multi-tenant data, and the impact of auth rate limits on development workflows.
  • React Native performance — Lazy loading screens and heavy dependencies (e.g. Paywall, ConfettiCannon) significantly reduces initial bundle size and improves perceived load time.

What's next for DreamSprint

  • Push notifications — Reminder at the user's preferred time to complete today's task.
  • Streak saver UI — Pro users get one save per sprint; we'll add an explicit "Use streak saver" flow when they miss a day.
  • Social sharing — Share sprint completion or achievements to social media.
  • More challenge templates — Expand the library with community-suggested or seasonal challenges.
  • A/B testing paywalls — Use RevenueCat experiments to optimize trial-to-paid conversion.

Built With

Share this project:

Updates