A modern CLI tool for scaffolding fully-typed, full-stack TypeScript applications with best practices and customizable technology choices.
- 🚀 Multiple Frontend Options: Next.js, React Router or TanStack Start
- 🔄 API Layer Options: tRPC or oRPC for end-to-end type safety
- 🗄️ Database Choices: Prisma, Drizzle, or Mongoose
- 🔒 Authentication: Multiple auth solutions including NextAuth.js and Better Auth
- 🎨 UI Components: Optional shadcn/ui integration
- ⚡ Turborepo: Optimized monorepo structure for better developer experience
- 📦 Shared Packages: Common code in packages for better code reuse
- 🔧 Pre-configured Tooling: ESLint, Prettier, TypeScript
To scaffold a new application using create-yuki-stack
, run any of the following commands and follow the interactive prompts:
npm create yuki-stack
yarn create yuki-stack
pnpm create yuki-stack
bun create yuki-stack
Option | Description |
---|---|
-y, --yes |
Skip all prompts and use default settings |
--no-yes |
Negate --yes option |
--frontend [values...] |
Frontend frameworks (choices: nextjs, react-router, tanstack-start) |
--database [string] |
Database option (choices: none, drizzle, prisma, mongoose) |
--adapter [string] |
Database adapter (choices: none, neon) |
--backend [string] |
Backend framework (choices: none, express, elysia, hono, spring-boot |
--api [string] |
API type (choices: none, eden, trpc, orpc) |
--auth [string] |
Authentication (choices: none, basic-auth, better-auth, next-auth) |
--extras [values...] |
Add extra packages and tooling (choices: gh-actions, email) |
--package-manager [string] |
Package manager (choices: npm, yarn, pnpm, bun) |
--install |
Install dependencies after setup |
--no-install |
Negate --install option |
--git |
Initialize git repository |
--no-git |
Negate --git option |
-h, --help |
Display help information |
-V, --version |
Display version number |
- Name:
my-yuki-app
- Frontend: [
Next.js
] - Database:
none
- Adapter: none
- Backend:
none
- API:
none
- Auth: none
- Extras: []
- Package Manager: Auto-detected from environment
- Install Dependencies:
true
- Initialize Git:
true
Frontend Frameworks
- Next.js: The React Framework for the Web
- React Router: A user‑obsessed, standards‑focused, multi‑strategy router you can deploy anywhere
- TanStack Start: Full-stack React and Solid framework powered by TanStack Router
Backend Frameworks
- Elysia: Ergonomic Framework for Humans & Fox Girls
- Express: Fast, unopinionated, minimalist web framework for Node.js
- Hono: Fast, lightweight, built on Web Standards. Support for any JavaScript runtime
API Layers
- eden: End-to-end type-safe APIs with Elysia
- tRPC: Move Fast and Break Nothing. End-to-end typesafe APIs made easy
- oRPC: Easy to build APIs that are end-to-end type-safe and adhere to OpenAPI standards
Database Options
- Drizzle: A lightweight and performant TypeScript ORM with developer experience in mind
- Prisma: Ship at lightning speed, and scale to a global audience effortlessly with our next-gen serverless Postgres database
- Mongoose: Elegant MongoDB object modeling for Node.js
Authentication
- Basic Auth: Basic authentication built from scratch based on Lucia
- Better Auth: The most comprehensive authentication framework for TypeScript
- Next Auth: Authentication for Next.js applications
Extras
- Github Actions: Automated CI/CD workflows for:
format
,lint
,typecheck
with reusable setup actions supporting multiple package managers (npm, yarn, pnpm, bun) - Email: Send transactional emails using
Resend
API with customizableReact Email
templates
The generated project follows a monorepo structure using Turborepo with:
apps/
├─ api/ # API server
└─ nextjs/ # Next.js application
packages/
├─ auth/ # Authentication utilities
├─ db/ # Database client and schema
├─ ui/ # Shared UI components
└─ validators/ # Shared validation schemas
-
If your packages or apps use
env
frompackages/validators
, you need to addDOM
to yourtsconfig.json
file because the validators package uses browser APIs:{ "compilerOptions": { "lib": ["DOM", "ES2022"] } }
-
Elysia.js Node Adapter Issue (2025-07-31): The
@elysiajs/node
adapter is missing thestop
method which can cause graceful shutdown issues. To fix this, add a customstop
method to your adapter configuration:new Elysia({ aot: true, prefix: '/api', adapter: { ...node(), async stop(app) { await app.stop(true) }, }, })
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.