Inspiration

I am bad at keeping streaks I care about.

Apps remind me, I ignore. Trackers let me check a box without proof. I wanted something harder to fake and nicer to look back on. One photo a day. If you did it, you have the photo. If you did not, the chain breaks.

I built the Duolingo streak for real life.

What it does

StreakShow is daily photo challenges. Pick one, shoot one photo a day, keep the chain alive.

Join a 7, 14 or 30 day challenge. The home screen tells you what to do today, not what you did last week. Your gallery becomes a timeline you can actually scroll through. Leaderboards show where you really stand.

The free version is honest - 2 challenges, watermarked. Pro just removes the limits. No tricks, no fake ranks.

How I built it

I built it as one product on two platforms from day one. One codebase for Android and iOS, so the streak logic, the gallery, and the paywall are the same everywhere. Payments and Pro status run through RevenueCat, so purchase, restore and entitlements work the same on both stores.

Everything else was iteration. Ship to a real device, watch where people hesitate, fix that.

Challenges I ran into

The hardest part was not the code. It was getting it ready for real users.

Getting the Play Store listing right took longer than building features. Notifications were a good example , turning them off used to be one tap and done. Now it asks you to keep them, because most broken streaks start with a muted reminder.

Visual details mattered too. A shadow that bled to the screen edge made the whole home screen feel cheap. Fixed, and suddenly it felt like a real app.

The last week was just polish until it felt shippable. No demo mode, no shortcuts that leak to production.

What's next

StreakShow is live in production. Next is getting it into people's hands, friends, shared challenges, and seasonal challenges people actually want to finish.

I built it to be used, not just judged.

Built With

  • android
  • camerax
  • compose-multiplatform
  • firebase-auth
  • firebase-firestore
  • gradle
  • ios
  • jetpack-compose
  • koin
  • kotlin
  • kotlin-multiplatform
  • material-3
  • revenuecat
  • room
Share this project:

Updates