Introduction
What Mobile Starter Kit is, what already works, and where to begin.
Mobile Starter Kit is a complete Expo and React Native product you can open on a phone before creating a single provider account. The included Vela demo has onboarding, authentication, four main tabs, AI coach and meal scan flows, paywalls, notifications, settings, localization, themes, account deletion, and the release workflow around them.
Everything runs on typed mock data first. When you are ready for real users, the production adapters for Supabase, RevenueCat, an OpenAI-compatible AI provider, Expo Push, PostHog, and Sentry are already in the repository. Your AI coding tool activates them one at a time by following the bundled agent skills.
Built for vibe coding
You do not need to memorize Expo, native build, or store terminology. Each guide tells you what the step achieves, what requires an external account, and the exact prompt to give your coding agent.
Start here
Put it on your phone
Use the supported Expo development-build path.
Explore the finished demo
See the screens and flows that already exist.
Make it yours
Rebrand Vela without breaking the working product.
Connect real services
Move from mock mode to production one provider at a time.
What is inside
- Mobile product: iOS, Android, and an Expo web export from one Expo Router app.
- Working demo: onboarding, Today, Scan, Coach, Activity, Profile, paywalls, inbox, settings, and deletion.
- Design system: Uniwind with Tailwind 4 role tokens, light/dark/system themes, Dynamic Type, and reduced motion.
- Production backend: Supabase Auth, Postgres, private Storage, Row Level Security, migrations, and Edge Functions.
- Revenue and AI: RevenueCat purchases plus server-key AI chat, image analysis, and voice transcription flows.
- Release system: EAS profiles, OTA update rules, Maestro journeys, store assets, legal pages, and evidence gates.
- 30 agent skills: focused instructions your AI reads before changing native behavior, wiring providers, auditing, or shipping.
The safe default is always mock mode. A screen looking complete does not mean a real provider is active; these docs make that boundary explicit.