Mint is an opinionated app-shell generator for people who want to build and ship mobile apps quickly without re-deciding the stack every time.
It creates an Expo Router app with Supabase, RevenueCat, PostHog, EAS, an extensible onboarding state machine, a TypeScript backend, quality tooling, and agent rules for future AI-assisted development.
pnpm dlx mintstack@latest new dreamcoachor:
npx mintstack@latest new dreamcoachMint validates provider access first, then applies provider resources together. If apply fails, Mint rolls back resources it created during that run and removes the generated local app directory.
If provider access is missing, the setup flow pauses, shows the exact command or credential it needs, and re-validates when you return. mint connect exists for pre-seeding credentials and repairs; mint new is the main path.
- Expo SDK 56 app using Expo Router primitives.
- Supabase client env plus server env for auth, database, storage, and backend access.
- RevenueCat app SDK keys and app records.
- PostHog analytics env and project token.
- EAS project link in
app.json. - Extensible onboarding state machine with a paywall step.
- Hono TypeScript backend in
server/src. - ESLint, Prettier, TypeScript, Vitest, and quality scripts.
CLAUDE.mdandAGENTS.mdrules so future agents know how to extend the app safely.
Mint can use provider credentials from the shell, from saved local state, or from the guided setup flow inside mint new.
To pre-seed credentials before creating an app:
mint connect supabase --login
mint connect revenuecat --api-key <sk_or_atk>
mint connect posthog --personal-api-key <phx_or_pat>
mint connect expo --expo-token <expo_token>Then run:
mint new dreamcoachProvider behavior is intentionally conservative:
- Supabase projects are created only after all providers validate.
- RevenueCat OAuth tokens (
atk_...) can create a new project. Project-scoped secret keys (sk_...) use an accessible existing project and create app records there. - PostHog creates a project when the account allows it. If the account is capped, Mint uses an accessible existing project and writes its public project token.
- EAS uses
eas-cli@latestand can initialize before dependencies are installed.
See Provider Setup for details.
After mint new completes:
cd dreamcoach
pnpm install
pnpm typecheck
pnpm lint
pnpm test
pnpm startThe generated app also includes:
pnpm server:dev
pnpm server:typecheck
pnpm format
pnpm format:checkmint new <app-name>
mint doctor
mint connect
mint connect supabase
mint connect revenuecat
mint connect posthog
mint connect expoCreate only the local app shell, without provider setup:
mint new dreamcoach --no-connectRender plain output for CI or non-interactive terminals:
mint new dreamcoach --plain
mint doctor --jsonpnpm install
pnpm dev new dreamcoach --dry-run
pnpm verifypnpm verify runs tests, typecheck, build, dist smoke tests, and packed-package smoke tests.
Mint is published as mintstack and exposes the mint binary.
pnpm verify
npm login
npm publish --access publicSee Publishing Guide for the full release checklist.
MIT