A production-ready monorepo with Next.js 15, Expo, Better Auth, Mastra AI, and Neon Postgres. Batteries included.
What's included
Every production concern solved on day one. No yak-shaving required.
Better Auth with email/password, Google OAuth, and password reset โ all optional and env-driven. Works on web and mobile out of the box.
Mastra agents with streaming chat. Swap between Groq, OpenAI, Anthropic, and Google by changing one env var โ no code changes needed.
Expo SDK 54 + React Native 0.76 with NativeWind v4 for styling. Shares auth and API client with the web app via the monorepo.
Serverless Postgres via Neon with a production-safe connection pool and automatic SSL. Drizzle ORM for fully type-safe queries.
Vitest unit tests across all packages. Playwright E2E across Chromium, Firefox, and Mobile Chrome. GitHub Actions CI wired up from day one.
Turborepo monorepo with pnpm workspaces, Tailwind CSS v4, TypeScript strict mode, Prettier, ESLint, and AI coding guidelines via AGENTS.md.
Get started
Four steps from zero to a working full-stack app.
Create your repo from the template
$ gh repo create my-app --template chitamoor/shipkit --private
$ cd my-app && pnpm install
Configure your env (only 5 vars required)
# apps/web/.env.local
BETTER_AUTH_SECRET=your-secret # openssl rand -base64 32
BETTER_AUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000
DATABASE_URL=postgresql://... # Neon connection string
GROQ_API_KEY=gsk_... # free tier at console.groq.com
Run database migrations
$ cd apps/web
$ pnpm dlx better-auth@latest migrate # auth tables
$ pnpm db:generate && pnpm db:migrate # app tables
Start developing
$ pnpm dev:web # web only โ localhost:3000
$ pnpm dev:mobile # mobile โ Expo Go
$ pnpm dev # everything at once
The stack
Stable, battle-tested, and version-locked.
Stop rebuilding the same boilerplate. Start with ShipKit and focus on what makes your product unique.