Blog
Behind-the-scenes stories from building BrainFit and BloomCard — algorithms, architecture, and indie dev lessons.
Surviving a 7-Phase Package Migration Across Two Flutter Apps
How I upgraded Riverpod, GoRouter, AdMob, and the entire Firebase stack across two production Flutter apps in 7 careful phases — and what I learned about managing migration risk.
Read more →Building Offline-First Flutter Apps with OfflineQueue and Supabase
How BrainFit ensures zero data loss during subway rides — with an OfflineQueue table, SyncService orchestration, and subscription state caching for offline Pro access.
Read more →Managing 32 Mini-Games with a Lazy Registry Pattern
How BrainFit organizes 32 cognitive training games across 6 brain areas using a registry pattern with lazy initialization for fast app startup.
Read more →90 CustomPainters: Why BloomCard Ditched Every Single Emoji
How inconsistent emoji rendering across devices led us to build 90+ CustomPainter classes — and the unexpected benefits of drawing everything in code.
Read more →Designing a Score System That Doesn't Frustrate Players
How BrainFit's BQ score uses asymmetric EMA smoothing and three layers of decline protection to keep players motivated — because losing feels twice as bad as winning feels good.
Read more →How I Used Chess Elo Ratings to Balance Brain Training Difficulty
Why I borrowed a chess rating system for a brain training app, and how tuning K-factors and asymmetric loss created a difficulty curve that keeps players in flow.
Read more →Designing a Community Deck Marketplace — Free Browsing, Paid Downloads
How BloomCard balances open exploration with sustainable monetization — download quotas, creator rewards, and the economics of a user-generated content marketplace.
Read more →Growing Planets vs Blooming Gardens — Designing Two Progression Systems
A side-by-side comparison of two gamification approaches: BrainFit's 5-stage planet evolution and BloomCard's stability-based garden growth — and why the metaphor matters more than the mechanics.
Read more →Designing Paywalls That Don't Drive Users Away
How two indie apps balance monetization with user experience — celebration paywalls, feature gates, cooldown managers, and the numbers behind each decision.
Read more →Implementing FSRS-5 Spaced Repetition From Scratch in Flutter
How I simplified the FSRS-5 algorithm for a flashcard app — trading 10% theoretical accuracy for 5x faster execution, with a garden growth visualization on top.
Read more →4 Side Projects I Killed — And What They Taught Me
Before BrainFit and BloomCard, I built and abandoned four side projects. Here's what went wrong, what I learned, and what carried over to the apps I'm shipping today.
Read more →