One codebase. Web and mobile from the same source.
You need to be on the web and in the app stores — and you don't want two teams, two repos, and two copies of every bug. This play ships both surfaces from a single monorepo, so a change you describe once lands in both places.
What you get
A Turborepo monorepo — one repo, one install, one CI pipeline.
A Next.js web app on Vercel / Amplify / self-managed VPS hosting, with a live preview URL per pull request.
A React Native app (Expo) for iOS and Android, built store-ready.
Shared
packages/*— design system, types, API client, and business logic, written once and used by both apps.One source of truth for auth, data, and validation. No drift between platforms.
Every repo, cloud, and store account under your org from day one.
How it's built
apps/web(Next.js) andapps/mobile(Expo / React Native) sit side by side.The shared
packages/*hold everything both apps agree on — UI, models, API calls, config.Types run end to end: change a shared model and both apps fail to compile until they're updated. Bugs surface before they ship, not after.
Turborepo caches the build graph, so CI stays fast as the codebase grows.
We've done exactly this
Wash Me is this play, shipped. One Turborepo, a Next.js web app and a React Native mobile app on a single codebase — a complete car-wash platform, web and mobile, from one source. Read the case study →
Web now, mobile later?
If you only need web today, that's a shorter play — but we lay the repo out so apps/mobile drops in later without unpicking anything. You don't pay the monorepo tax twice.