Back to blog
4 min

Week 1-2: Building the Foundation Before the First App

Before shipping 52 apps, I needed to build the machine that builds apps. Here's how I set up SprintKit Flutter, my starter template.

indie-dev
build-in-public
flutter
sprintkit

The Temptation to Just Start Coding

When I announced my plan to build 52 apps in 52 weeks, my first instinct was to immediately start coding the first app. Just pick something simple—a timer, a counter—and ship it.

But I've been down that road before. You build the first app, then the second, and by the third you're copy-pasting code between projects, fixing the same bugs, and wasting time on boilerplate.

So I decided to spend the first two weeks building the foundation: SprintKit Flutter.

What is SprintKit?

SprintKit is my starter template for Flutter apps. The idea is simple: every app I build this year will start from this template, so every hour I invest in it pays dividends 52 times over.

Here's what I needed it to include:

  • RevenueCat for subscriptions and one-time purchases
  • Firebase Analytics for tracking user behavior
  • Theme system with dark/light mode
  • Internationalization ready for 9+ languages
  • Onboarding flow with paywall
  • Fastlane for automated deployments

The Reality Check: 10-15 Hours

I estimated it would take a week. It took closer to 10-15 hours of focused work spread across two weeks.

The biggest time sinks:

  1. Flutter SDK setup on macOS - Homebrew, CocoaPods, and Xcode versions need to play nice together. More fiddly than I expected.

  2. Android toolchain - The cmdline-tools installation is not intuitive. You need to accept licenses in a specific way, and the emulator setup has its quirks.

  3. RevenueCat integration - The SDK is well-documented, but testing purchases requires specific sandbox configurations on both platforms.

Architecture Decisions

Some choices I made for the template:

State Management: Provider

I went with Provider instead of Riverpod or Bloc. Why?

  • It's simpler for microapps (one feature, minimal state)
  • I already know it well
  • Easy to migrate to Riverpod later if needed

For apps with one core feature, you don't need a complex state management solution.

Storage: Hive + SharedPreferences

  • SharedPreferences for simple key-value (settings, flags)
  • Hive for structured data (if an app needs local persistence)

Most microapps won't need a database. When they do, Hive is fast and simple.

Project Structure

lib/
├── core/
│   ├── theme/          # Colors, typography, dark mode
│   ├── analytics/      # Firebase wrapper
│   ├── monetization/   # RevenueCat service
│   └── i18n/           # Translations
├── features/
│   └── [feature]/      # One feature per app
└── main.dart

The idea is that when I start a new app, I only touch the features/ folder. Everything else is already configured.

Validation: Construction Calculator Pro

Before declaring SprintKit "done," I wanted to validate it with a real app.

I built Construction Calculator Pro in about 6 hours using the template. It's a simple utility for construction workers to calculate materials. Nothing fancy, but it proved the template works:

  • RevenueCat paywall: working
  • Firebase events: firing
  • Both platforms: building

That 6-hour turnaround is exactly what I need for the 1-app-per-week rhythm.

Other Wins This Week

Beyond SprintKit, I also:

  • Verified my Google Play Developer account - $25 one-time fee, identity verification took a couple of days
  • Requested Garmin API access - For my triathlon app (SprintTri), coming in a few weeks
  • Set up my HQ system - A folder structure for tracking progress, backlog, and weekly logs

What's Next

With SprintKit Flutter done, I have two options:

  1. Start shipping microapps immediately
  2. Build SprintKit Web (the SaaS starter template)

I'm leaning toward getting SprintKit Web done first, so I have both starters ready before production mode begins. But the itch to ship something real is strong.

Metrics After Week 2

| Metric | Value | |--------|-------| | Apps published | 0 | | MRR | $0 | | Hours invested | ~15h | | Template ready | SprintKit Flutter v0.1 |

The revenue is zero. But the foundation is solid.

Next week, the real work begins.


Follow along on Twitter/X for daily updates.