Major release
v2.0
May 22, 2026
Introducing ZeroToShipped V2!
Zero To Shipped V2 is a full monorepo rewrite: pnpm workspaces, Expo mobile for iOS and Android, a WXT browser extension, REST + MCP + SDK + CLI, and every dependency brought up to date.
V1 was a solid Next.js starter. V2 is the product we always wanted it to become: one codebase that ships web, mobile, browser extensions, and programmatic access — all sharing the same auth, billing, database, and API layer. We rebuilt the repo as a pnpm monorepo, upgraded every package to current releases, and added three new surfaces you can ship on day one.
Monorepo architecture
Web, mobile, extension, and nine shared packages live in one pnpm + Turbo repo with typed workspace imports.
Expo mobile app
Native iOS and Android app with shared auth, chat, billing, admin, and preferences — powered by the same tRPC router as web.
Browser extension
WXT-based Chrome extension with sign-in, session sync, billing state, and deep links back into the web app.
REST, SDK, CLI & MCP
One tRPC router exposed over four transports: tRPC for apps, REST for integrations, MCP for AI agents, OpenAPI for codegen.
Ship on V2 today
Get the full monorepo — web, mobile, extension, SDK, and MCP.
Zero To Shipped V2 gives you the production Next.js app, Expo mobile app, browser extension, auth, billing, REST API, and deploy paths already connected.
One-time payment. Lifetime updates.
From single app to monorepo
The biggest structural change in V2 is the move from a standalone Next.js repo to a pnpm workspace monorepo orchestrated by Turbo. Everything that used to be tangled inside `apps/web` is now split into focused packages you can import anywhere.
- `apps/web` — Next.js 16 app with tRPC, REST, MCP, auth, billing, AI chat, and admin
- `apps/mobile` — Expo 56 app for iOS and Android with expo-router
- `apps/extension` — WXT browser extension with shared Better Auth session
- `packages/trpc` — shared router used by web, mobile, REST, and MCP
- `packages/auth`, `packages/db`, `packages/email`, `packages/env`, `packages/ai`, `packages/shared` — cross-app infrastructure
- `packages/sdk` and `packages/cli` — TypeScript SDK and `zts` CLI generated from the same OpenAPI spec
Every package, bumped
V2 is not a cosmetic refresh. We upgraded the entire stack to current releases so you start on modern foundations instead of planning a migration six months in.
- Next.js 16 and React 19 on web
- Expo SDK 56 with React Native 0.85 for iOS and Android
- Better Auth 1.6 with Expo and browser-extension support
- tRPC 11 with TanStack Query v5 across web and mobile
- AI SDK 6 for streaming chat on web and mobile
- Polar.sh billing, BullMQ background jobs, Prisma, and Zod v4 for OpenAPI generation
- pnpm 11 with strict dependency policies, Turbo pipelines, oxlint, and oxfmt
Expo mobile app for iOS and Android
The mobile app is not a WebView wrapper. It is a real Expo app that talks to the same backend as web through the shared `@zts/trpc` package. Sign in once, and auth, billing, and preferences stay in sync.
- Email/password auth with verification, password reset, and secure token storage via expo-secure-store
- AI chat panel with streaming responses using the shared AI SDK setup
- Billing and subscription management through Polar — same plans as web
- Admin panel, user management, and environment cards for operators
- Preferences, security settings, profile, and onboarding flows
- Deep links for email verification, checkout success, and password reset
- `pnpm dev:mobile`, `dev:mobile:ios`, and `dev:mobile:android` scripts from the monorepo root
Browser extension
We added a WXT-based browser extension so your product can live where users already work — in the browser toolbar. It shares the Better Auth session with the web app via cookies on your app origin.
- Popup sign-in, sign-up, and password reset using the same auth API as web and mobile
- Signed-in state with user summary, billing status, and quick links to app settings
- Background message bridge for session sync and opening app tabs
- Configurable web app URL in the extension options page
- Chrome MV3 build with `pnpm dev:extension` and hot reload during development
One API, four ways in
V2 treats your tRPC router as the source of truth and exposes it through multiple transports. Apps use tRPC. Integrations use REST. AI agents use MCP. Codegen uses OpenAPI.
- tRPC at `/api/trpc` for web and mobile clients
- REST at `/api/rest` with Swagger UI at `/api/docs` and OpenAPI spec at `/api/openapi.json`
- MCP server at `/api/mcp` with OAuth support for Cursor and other AI tools
- `@zts/sdk` — TypeScript SDK generated from OpenAPI, ready for scripts and backends
- `zts` CLI — request any REST endpoint or use shortcuts like `zts me` and `zts preferences`
- API key auth via `x-api-key` header for REST and MCP (`zts_…` keys through Better Auth)
Production-ready from the monorepo root
Shipping V2 also meant hardening the deployment story. Migrations run on boot, Turbo declares build dependencies between workspace packages, and Coolify deploys the whole monorepo cleanly.
- `pnpm run ci:ship` — police, lint, format, typecheck, unit tests, build, and smoke e2e in one command
- Prisma migrations deploy automatically before `next start` in production
- Dockerfile-based Coolify deployment with health checks and staging/production env separation
- ENV generator at env.zerotoshipped.com and docs at documents.zerotoshipped.com updated for the monorepo layout
- Demo app at demo.zerotoshipped.com running the full V2 stack
What this means for you
If you bought Zero To Shipped to skip SaaS plumbing, V2 gives you more surfaces to ship without more glue code. You get web, mobile, and extension from one repo. You get programmatic access without writing a second API. And you get current packages so you are not maintaining a fork of 2024 dependencies.
- Clone once, run `pnpm install`, migrate, and start web + mobile + extension in parallel
- Customize features in shared packages — changes propagate to every app automatically
- Expose new procedures to REST/MCP/SDK by tagging them in `packages/trpc` and regenerating OpenAPI
- Ship to App Store and Play Store with the Expo app, or extend the browser extension for your workflow
