The Problem
Digital wellness apps have a credibility problem. Most of them are built in a weekend hackathon, slap a timer on your screen, and call it a "detox." They lack the behavioral science depth, the subscription infrastructure, and the sustained engineering commitment to actually help someone change their habits. We wanted to build the version that takes the problem seriously — a full-featured mobile app with structured detox challenges, AI-powered coaching, progress analytics, and cross-platform monetization. Not a weekend project, but a real product.
The Approach
We shipped this across 49 phases and 8 milestones — 123 individual plans total. That sounds like a lot because it is. Each milestone represented a meaningful product increment:
v1.0 laid the foundation: recovery language system, resilience scoring, urge surfing tools, a "brain garden" visualization, AI-powered why-analysis, chronotype-based scheduling, and growth features like streak shields and a "Detox Wrapped" summary. Plus the full landing page, blog, SEO, and Capacitor builds for mobile.
v2.0 added the retention engine: smart notifications using Just-In-Time Adaptive Interventions (JITAI), cue-reward mapping, adaptive habit scaling toward the research-backed 66-day habit formation window, and infrastructure hardening — OAuth, refresh tokens, Redis caching, database indexes.
v3.0 brought monetization and depth: RevenueCat for cross-platform subscriptions (StoreKit, Play Billing, and web Stripe all unified), multi-turn AI coaching with server-sent event streaming, guided journaling with mood extraction, behavioral risk predictions, WCAG 2.1 AA accessibility, and a Telegram bot. Plus an Apple Watch complication, because why not.
The later milestones (v4.0 through v8.0) covered GDPR compliance with AES-256-GCM encryption, analytics dashboards, crisis detection, security hardening, push notifications with offline sync, full internationalization with Spanish translations across 600+ keys, and a complete UX/UI design overhaul.
The 49-phase count is not padding. Each phase had explicit requirements, a plan, execution, and verification. This is the GSD methodology in practice — the discipline of planning before coding is what makes a project this large completable as a side project rather than a graveyard of half-finished features.
Technical Decisions
Express.js + PostgreSQL backend, Next.js static export frontend. The backend runs 27 controllers, 20 models, and a full migration system across 36 database migrations. The frontend uses Next.js with output: "export" for static site generation, which constrains dynamic routes to generateStaticParams() but dramatically simplifies deployment — Vercel hosts the frontend, Railway hosts the backend.
RevenueCat for subscription management. Cross-platform billing is genuinely hard. You need StoreKit for iOS, Play Billing for Android, and Stripe for web — three completely different payment systems that need to agree on who has a subscription. RevenueCat unifies all three behind a single SDK. The plugin loading required some careful async handling (their Capacitor plugin has a thenable proxy issue), but it saved months of per-platform billing code.
AI coaching with Pro gating. Anthropic's Claude powers multi-turn coaching sessions, predictions, journaling insights, and why-analysis. All AI features are gated behind the Pro subscription tier — hasActiveSubscription(userId) on the backend, subscription state checks on the frontend. This keeps the free tier useful while making Pro genuinely valuable.
WebAuthn passkeys alongside traditional auth. v7.0 added passwordless authentication via WebAuthn with a 4-ceremony backend implementation and Redis challenge store. Combined with Google One-Tap sign-in, the goal was reducing onboarding friction — every step between "interested" and "using the app" costs users.
The Outcome
The test suite tells part of the story: 460 backend tests, 536+ frontend tests, 143 end-to-end specs. Pre-commit hooks run ESLint, Prettier, TypeScript checks, security audits, and secret detection. Pre-push runs the full unit suite. CI runs everything including Lighthouse performance checks and Android builds.
The app went through a full Android emulator QA pass and has an automated CI pipeline that publishes to the Play Store internal track on push to main. iOS builds are pending Apple Developer Program enrollment.
What we are most proud of is not any single feature — it is that 49 phases shipped without the project collapsing under its own weight. The architecture stayed clean enough at phase 49 to still accept new features without major refactoring. That does not happen by accident. It happens because of migration systems, test coverage, and the discipline to do security audits and accessibility passes even when you would rather build the next shiny feature.
There is known tech debt — tutorial steps reference removed UI elements, some chart components still have inconsistent colors, the Spanish translations need professional review. We document it honestly because shipping imperfect software that works is better than perfecting software that never ships.
Building a mobile app? Book a free call — we ship full-stack from design to app store.