mirror of
https://github.com/FranP-code/create-better-t-stack.git
synced 2025-10-12 23:52:15 +00:00
8.5 KiB
8.5 KiB
Create Better-T-Stack CLI
A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations
Quick Start
Run without installing globally:
# Using npm
npx create-better-t-stack@latest
# Using bun
bun create better-t-stack@latest
# Using pnpm
pnpm create better-t-stack@latest
Follow the prompts to configure your project or use the --yes flag for defaults.
Features
| Category | Options |
|---|---|
| TypeScript | End-to-end type safety across all parts of your application |
| Frontend | • React with TanStack Router • React with React Router • React with TanStack Start (SSR) • Next.js • SvelteKit • Nuxt (Vue) • SolidJS • React Native with NativeWind (via Expo) • React Native with Unistyles (via Expo) • None |
| Backend | • Hono • Express • Elysia • Next.js API routes • Convex • None |
| API Layer | • tRPC (type-safe APIs) • oRPC (OpenAPI-compatible type-safe APIs) • None |
| Runtime | • Bun • Node.js |
| Database | • SQLite • PostgreSQL • MySQL • MongoDB • None |
| ORM | • Drizzle (TypeScript-first) • Prisma (feature-rich) • Mongoose (for MongoDB) • None |
| Database Setup | • Turso (SQLite) • Neon (PostgreSQL) • Prisma Postgres (via Prisma Accelerate) • MongoDB Atlas • None (manual setup) |
| Authentication | Better-Auth (email/password, with more options coming soon) |
| Styling | Tailwind CSS with shadcn/ui components |
| Addons | • PWA support • Tauri (desktop applications) • Starlight (documentation site) • Biome (linting and formatting) • Husky (Git hooks) • Turborepo (optimized builds) |
| Examples | • Todo app • AI Chat interface (using Vercel AI SDK) |
| Developer Experience | • Automatic Git initialization • Package manager choice (npm, pnpm, bun) • Automatic dependency installation |
Usage
Usage: create-better-t-stack [project-directory] [options]
Options:
-V, --version Output the version number
-y, --yes Use default configuration
--database <type> Database type (none, sqlite, postgres, mysql, mongodb)
--orm <type> ORM type (none, drizzle, prisma, mongoose)
--auth Include authentication
--no-auth Exclude authentication
--frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-nativewind, native-unistyles, none)
--addons <types...> Additional addons (pwa, tauri, starlight, biome, husky, turborepo, none)
--examples <types...> Examples to include (todo, ai, none)
--git Initialize git repository
--no-git Skip git initialization
--package-manager <pm> Package manager (npm, pnpm, bun)
--install Install dependencies
--no-install Skip installing dependencies
--db-setup <setup> Database setup (turso, neon, prisma-postgres, mongodb-atlas, none)
--backend <framework> Backend framework (hono, express, elysia, next, convex)
--runtime <runtime> Runtime (bun, node, none)
--api <type> API type (trpc, orpc, none)
-h, --help Display help
Examples
Create a project with default configuration:
npx create-better-t-stack my-app --yes
Create a project with specific options:
npx create-better-t-stack my-app --database postgres --orm drizzle --auth --addons pwa biome
Create a project with Elysia backend and Node.js runtime:
npx create-better-t-stack my-app --backend elysia --runtime node
Create a project with multiple frontend options:
npx create-better-t-stack my-app --frontend tanstack-router native
Create a project with examples:
npx create-better-t-stack my-app --examples todo ai
Create a project with Turso database setup:
npx create-better-t-stack my-app --database sqlite --orm drizzle --db-setup turso
Create a project with Convex backend:
npx create-better-t-stack my-app --backend convex --frontend tanstack-router
Create a project with documentation site:
npx create-better-t-stack my-app --addons starlight
Compatibility Notes
- Convex backend: Automatically disables authentication, database, ORM, and API options
- Backend 'none': If selected, this option will force related options like API, ORM, database, authentication, and runtime to 'none'. Examples will also be disabled (set to none/empty).
- SvelteKit, Nuxt, and SolidJS frontends are only compatible with oRPC API layer
- PWA support requires React with TanStack Router, React Router, or SolidJS
- Tauri desktop app requires React (TanStack Router/React Router), Nuxt, SvelteKit, or SolidJS
- AI example is not compatible with Elysia backend or SolidJS frontend
Project Structure
The created project follows a clean monorepo structure:
my-better-t-app/
├── apps/
│ ├── web/ # Frontend application
│ ├── server/ # Backend API
│ ├── native/ # (optional) Mobile application
│ └── docs/ # (optional) Documentation site
├── packages/ # Shared packages
└── README.md # Auto-generated project documentation
After project creation, you'll receive detailed instructions for next steps and additional setup requirements.
