React Native + NestJS + Supabase Starter Kit
A production monorepo: React Native 0.81 + Expo ~54 frontend, NestJS 11 backend, Supabase database. Pre-wired auth, RLS, migrations, and deployment. Used to ship 4 apps in a month.
A production monorepo: React Native 0.81 + Expo ~54 frontend, NestJS 11 backend, Supabase database. Pre-wired auth, RLS, migrations, and deployment. Used to ship 4 apps in a month.
Starter Kit
Production monorepo with React Native, NestJS, and Supabase. Auth, RLS, migrations, deployment — done.
React Native 0.81 + Expo ~54 on the frontend. NestJS 11 on the backend. Supabase for auth and database. All in one monorepo.
I used this exact stack to ship 4 apps in a month. Not prototypes. Real apps on the App Store.
React Native + Expo — I've shipped production apps in both Flutter and React Native. React Native won for me because the JavaScript ecosystem means existing npm packages work, TypeScript is first-class, and Expo ~54 made the App Store submission workflow reproducible enough to automate.
NestJS — The AI agents need predictable structure. NestJS's module/controller/service pattern is opinionated enough that the Executor agent knows exactly where to put things. Simpler Express setups give AI too much latitude. Output gets inconsistent.
Supabase — PostgreSQL with Row Level Security. OAuth, email, magic link auth out of the box. Real-time subscriptions. Storage. No Firebase lock-in, no vendor-specific query language.
| Layer | Technology | What's Done |
|---|---|---|
| Mobile | React Native + Expo | Navigation, auth flow, state management |
| Backend | NestJS 11 | REST APIs, WebSocket gateway, auth guard |
| Database | Supabase | Schema, RLS policies, migrations |
| Auth | Supabase Auth | Email, OAuth, magic link, session handling |
| Deployment | Docker + GitHub Actions | CI/CD to Oracle Cloud free tier |
Mobile App (React Native + Expo)
↓ REST / WebSocket
NestJS Backend (Docker on Oracle Cloud)
↓ Supabase SDK
Supabase (PostgreSQL + Auth + Storage)
The monorepo structure means shared types between frontend and backend. Change a database schema, and TypeScript catches mismatches in both layers immediately.
Supabase RLS is non-negotiable. Without it, every endpoint needs manual auth checks. With it, the database enforces access rules regardless of what the backend does.
NestJS guards + Supabase JWTs = zero auth code. The guard validates the JWT. The service queries Supabase. No auth logic in business code.
Expo EAS Build changed everything. Before EAS, I spent 8-16 hours per app on code signing and provisioning. Now it's one command.
The monorepo pays for itself in week 2. Shared types, shared configs, one git push deploys everything.
One-time purchase. Full-stack boilerplate + 11 AI agents. No subscription.