Dev Story

How I Built a Full App Solo in 3 Weeks

Youcef February 7, 2026

How I Built a Full App Solo in 3 Weeks

January 15th. I open the RevenueCat Shipyard brief. 28 days to build something real.

February 9th. Muse Otter is live — 6 AI companiones, voice input, custom coach creator, subscription system, iPad-native design, and full localization.

Here’s how.


The Timeline

WeekFocusDeliverables
Week 1FoundationAuth, data models, default coaches, basic chat
Week 2Core FeaturesVoice input, custom coaches, Know You context
Week 3PolishiPad UI, Foundation feature, onboarding, paywall
Week 4ShipTesting, docs, marketing assets, submission

I didn’t plan it this clean. It just happened because I’ve done this before.


The Stack That Made It Possible

Every choice was about removing decisions:

Frontend:     Flutter 3.24 (one codebase, 6 platforms)
State:        Riverpod (code-gen, type-safe)
Backend:      Firebase Cloud Functions v2 (zero ops)
Database:     Firestore (real-time, offline)
AI:           Genkit + Gemini 2.0 Flash
Payments:     RevenueCat (handled in hours)
Voice:        Vapi SDK
i18n:         Slang (code-gen translations)

Why Flutter? One codebase for iOS, Android, Web, and macOS. iPad isn’t a stretched phone UI — it’s a proper three-column layout.

Why Firebase? I don’t want to manage servers. Cloud Functions scale automatically. Firestore handles offline sync. Auth handles everything from anonymous to Google Sign-In.

Why RevenueCat? StoreKit and Google Billing would have taken a week each. RevenueCat took an afternoon.


The Process

Day 1-3: Auth + Data Model

Started with the boring stuff:

  • Firebase Auth (anonymous first, link account later)
  • Firestore structure (users, coaches, chats, messages)
  • Basic Riverpod providers

Day 4-10: Make It Work

  • Chat interface with real-time updates
  • AI pipeline (Genkit → Gemini → Firestore)
  • 6 default coaches with distinct personalities
  • Know You context system

Day 11-17: Make It Good

  • Voice input with Cloud Speech-to-Text
  • Custom coach wizard (4-step creation flow)
  • iPad-native responsive design
  • Foundation feature (personal growth tracking)

Day 18-21: Make It Ship

  • RevenueCat integration
  • Paywall screens (soft + hard)
  • Onboarding flow with celebration animations
  • Localization (EN + FR)
  • Testing, bug fixes, polish

Key Decisions

1. Anonymous Auth First

No signup friction. Users can chat immediately. Account linking comes later if they want to sync across devices.

Result: Zero drop-off at onboarding.

2. Document-Status Pattern for AI

Instead of WebSockets or complex streaming:

1. User sends message → status: "pending"
2. Cloud Function triggers
3. Genkit calls Gemini
4. Response written → status: "done"
5. App updates via Firestore listener

Simple. Reliable. Debuggable.

3. Feature-First Architecture

Every feature is self-contained:

lib/features/chat/
├── data/           ← Firebase integration
├── domain/         ← Business logic
└── presentation/   ← UI + Riverpod

No cross-feature dependencies. I can work on one thing at a time.

4. iPad as First-Class Citizen

Most apps treat tablets as an afterthought. I built a three-column layout from day one:

Phone:  Chat only
Tablet: Coaches | Chat | Context

It’s not harder. It just requires thinking about it early.


What I Shipped

  • 6 AI Coaches with distinct methodologies
  • Know You personal context system
  • Foundation personal growth journal
  • Custom Coaches with AI-assisted creation
  • Voice Input via Cloud Speech-to-Text
  • Voice Calls via Vapi (real-time AI conversations)
  • Subscription System via RevenueCat
  • iPad-Native responsive design
  • EN + FR localization

The Real Secret

I’ve built 3 structured reflection apps before this one. BeeDone. Evolum. Strive.

Every app makes the next one faster. Not because I copy code — I don’t. But because I know what works:

  • Document-status pattern for AI
  • Anonymous → linked auth flow
  • Feature-first architecture
  • RevenueCat from day one

The first time I built a reflection app, it took 6 months. Now it takes 3 weeks.


Try It

Muse Otter is free to start. 20 messages per day, no credit card.

If you’re building something and want a sounding board at 2am, give it a shot.

That’s what I built it for.

Start Reflecting. The Otter Will Do the Rest.

30 seconds to capture. 7 minutes to review. A lifetime of patterns to discover.

Also on iPad with Apple Pencil

Free to start. No credit card required.