Presets
Presets
Use and create stack presets
A preset is a JSON file that describes a complete stack configuration. Instead of answering CLI prompts, you can pass a preset URL to scaffold instantly.
Built-in Presets
minimal
Next.js + UI package + Tailwind 4 + Biome. The simplest starting point.
npx create-turbo-stack --preset minimalsaas-starter
Full-stack SaaS: Supabase (DB + Auth), tRPC v11, shadcn/ui, i18n, Sentry, PostHog, React Email.
npx create-turbo-stack --preset saas-starterapi-only
Hono standalone API with Drizzle ORM and Upstash rate limiting. No frontend.
npx create-turbo-stack --preset api-onlyUsing a Community Preset
Anyone can host a preset at any URL:
npx create-turbo-stack --preset https://example.com/my-stack.jsonPreset Schema
Presets must conform to the preset JSON schema.
{
"$schema": "https://create-turbo-stack.dev/schema/preset.json",
"name": "my-preset",
"version": "1.0.0",
"basics": {
"projectName": "my-project",
"packageManager": "bun",
"scope": "@my-project",
"typescript": "strict",
"linter": "biome",
"gitInit": true
},
"database": { "strategy": "none" },
"api": { "strategy": "none" },
"auth": { "provider": "none", "rbac": false, "entitlements": false },
"css": { "framework": "tailwind4", "ui": "shadcn", "styling": "css-variables" },
"integrations": {
"analytics": "none",
"errorTracking": "none",
"email": "none",
"rateLimit": "none",
"ai": "none",
"envValidation": true
},
"apps": [
{ "name": "web", "type": "nextjs", "port": 3000, "consumes": ["ui"] }
],
"packages": [
{ "name": "ui", "type": "react-library", "producesCSS": true }
]
}Validation
Presets are validated with Zod. Invalid combinations are rejected:
supabase-authrequiresdatabase.strategy: "supabase"i18nonly works with web-facing apps (Next.js, SvelteKit, Astro, Remix)- CMS integrations only work with Next.js apps
- App names and ports must be unique
consumesmust reference existing packages