Skip to content
John Ndigirigi
WorkAboutWritingResumeContactBook a call (opens in a new tab)
  • Work
  • About
  • Writing
  • Resume
  • Contact
Book a call (opens in a new tab)
John Ndigirigi

Full-stack & AI Engineer · Nairobi, working remotely worldwide.

  • Work
  • About
  • Writing
  • Resume
  • Contact

© 2026 John Ndigirigi

Built with React + Vite + Tailwind

All work

Case study

Children's digital wellness app

Separate iOS and Android experiences for parents, children and coaches, with secure sign-in, subscriptions and an automated path to TestFlight and Google Play.

Role
Mobile Lead · Toptal client
Team
8 people across backend, QA, DevOps and mobile
Dates
Jul – Aug 2026
Stack
  • Expo
  • React Native
  • TypeScript
  • RevenueCat
  • GitHub Actions
  • EAS

The problem

A Toptal client needed a children's digital wellness app for iOS and Android that served three different people: parents, children and coaches. Each needed their own experience.

Sign-in had to be secure in an app used by children, paid features had to sit behind subscriptions, and an 8-person team working in parallel needed releases to reach TestFlight and Google Play without anyone building them by hand.

What I built

  • Led mobile development in an 8-person team, working alongside backend, QA and DevOps.
  • Separate experiences for parents, children and coaches, in Expo React Native and TypeScript.
  • Secure sign-in with one-time passcodes, Sign in with Apple and Sign in with Google.
  • In-app subscriptions with RevenueCat, with paid features gated by entitlement.
  • The release pipeline: linting, type checks, tests and builds run automatically, and builds are submitted to TestFlight and Google Play through GitHub Actions and EAS.

How it works

Mobile release pipelineCode is pushed to GitHub. GitHub Actions runs linting, type checks and tests. EAS then builds the iOS and Android apps, and submits the iOS build to TestFlight and the Android build to Google Play.Code pushed to GitHubGITHUB ACTIONSLintType checkTestsEAS BUILDiOS buildAndroid buildTestFlightSubmitted by EASGoogle PlaySubmitted by EASAutomated step
The release pipeline. Every change goes through the same automated checks in GitHub Actions, then EAS builds the iOS and Android apps and submits them to TestFlight and Google Play.

Key decisions

  1. Gate features by entitlement

    Instead ofChecking for specific store products in the app

    RevenueCat entitlements describe what a user can access, not which product they bought. The app asks one question, whether the user has the entitlement, so the subscription products can change without touching every paid screen.

  2. Automate the release path

    Instead ofBuilding and uploading releases by hand

    With eight people shipping in parallel, every change runs the same lint, type-check, test and build steps in GitHub Actions, and EAS submits the builds to TestFlight and Google Play. Releases don't depend on one person's machine.

Results

Delivered separate experiences for parents, children and coaches on iOS and Android, with secure sign-in, entitlement-gated subscriptions, and a release pipeline that runs every change through the same checks before it is submitted to TestFlight and Google Play.

← PreviousQuoteKamiliNext →Sociale