PeakLife
Vedic-astrology guidance app with chart-grounded AI chat
PeakLife turns a user's Vedic birth chart into practical, hour-by-hour 'peak windows', daily transit alerts, and an AI advisor grounded in their chart: no mysticism, just actionable guidance. Live on Google Play, taken from zero to a signed production release in about six weeks.
The Problem
Astrology apps are either generic horoscopes or unusable jargon. PeakLife needed personalized, chart-derived guidance delivered like a productivity tool, with family profiles, subscriptions, and the release infrastructure of a serious consumer app.
The Solution
A feature-first Riverpod 3 Flutter app: phone-OTP auth with birthplace autocomplete, animated chart generation, an hour-by-hour hora table of favorable windows, threaded AI conversations grounded in the chart, multi-profile family charts, and Razorpay subscriptions with server-driven paywalls and usage-limit gating.
Architecture
- Feature-first layering (features → shared → core) under a strict engineering guide: 300-line file cap, design-token-only UI, centralized endpoints
- Dio interceptor chain: Firebase-ID-token auth with 401 refresh-retry → exponential backoff → logging
- Dev/prod flavors wired to two separate Firebase projects with side-by-side installs; per-flavor API, Sentry environment and Google services config on both platforms
- Remote Config as an ops layer: maintenance mode, forced-update gates, payment kill switch, runtime API failover, all without a release
- GitHub Actions CI/CD: push to beta → signed Android APK + iOS IPA → Firebase App Distribution, secrets injected at build time
Challenges & How I Solved Them
Two Firebases, one codebase
Staging and production needed full isolation: auth, data, analytics, push. Flutter flavors drive the Firebase options dispatcher, API base URL and Sentry environment, with a .debug application-id suffix so both builds install side by side.
Paywalls that change without releases
The paywall is server-rendered HTML in a WebView with a subscription-intent → Razorpay checkout → status-polling flow, so pricing experiments never wait on app review.
My Contributions
- Dev/prod flavor system with dual Firebase projects (authored the PR)
- Multi-profile family charts and the profile switcher
- Threaded AI chat: threads API integration, rename/pin/soft-delete
- CI/CD and release infrastructure to a signed Play Store build
Impact
- Live on Google Play (me.peaklife) as an early-access release
- Zero → signed v1.0.5 production release in ~6 weeks, 99 commits
Lessons Learned
Release infrastructure is a feature: the flavor system, Remote-Config kill switches and CI pipeline let a two-person team ship weekly without fear.