Create a full-stack Turborepo project with Next.js, NestJS, Expo, and Electron
npm install create-turborepo-full-stack-templateCreate a full-stack Turborepo project with Next.js, NestJS, Expo, and Electron in one command.
``bash`Create an empty directory and run from it
mkdir my-project && cd my-project
npx create-turborepo-full-stack-template my-project
This template creates a complete monorepo with:
| Template | Description | Port |
| --------- | ----------------------- | ---- |
| api | NestJS 11 backend API | 8000 |web
| | Next.js 16 web frontend | 3000 |mobile
| | Expo 54 mobile app | - |desktop
| | Electron desktop app | - |
- @repo/ui - Shared React components (CVA + Tailwind)@repo/eslint-config
- - ESLint presets (base, nestjs, next)@repo/typescript-config
- - TypeScript configs@repo/server-shared
- - NestJS shared utilities (filters, interceptors, config)@repo/i18n
- - Internationalization config@repo/types
- - Shared TypeScript types@repo/utils
- - Shared utilities@repo/consts
- - Shared constants@repo/exception
- - Exception codes
`bash`
npx create-turborepo-full-stack-template
`bash`
mkdir my-project && cd my-project
npx create-turborepo-full-stack-template my-awesome-project
`bash`
mkdir my-project && cd my-project
npx create-turborepo-full-stack-template my-project --skip-install
| Option | Description |
| ---------------- | ---------------------------------- |
| --skip-install | Skip pnpm install after creation |--help, -h
| | Show help message |--version, -v
| | Show version |
`bashCreate your first app
pnpm create-app
Customize Package Scope
The default package scope is
@repo/. You can change it to your preferred scope:$3
`bash
Preview changes (dry-run)
pnpm rename-scope mycompany --dry-runApply changes (@repo/ → @mycompany/)
pnpm rename-scope mycompanyReinstall dependencies after renaming
pnpm install
`$3
If you use Claude Code, you can easily change it with a command:
`
/rename-scope mycompany
`Claude Code will automatically perform a dry-run, apply changes, reinstall dependencies, and verify the build.
$3
`bash
pnpm dev # Start API + Web (not mobile/desktop)
pnpm build # Build all packages
pnpm lint # Lint with auto-fix
pnpm check-types # TypeScript type check
pnpm test # Run all tests
pnpm format # Prettier format all files
`
$3
Add new apps to your project using the built-in CLI generator:
`bash
pnpm create-app # Interactive mode
pnpm create-app --from # Create new app from template
pnpm create-app --list # List available templates
`Available templates:
mobile, desktop, web, api
$3
After creating apps with
pnpm create-app, use:`bash
pnpm dev # Start app in dev mode
pnpm build # Build app
For API apps:
pnpm prisma studio # Open Prisma Studio
pnpm test:unit # Unit tests
`
Requirements
- Node.js >= 18 (Node.js >= 22 recommended for the generated project)
- pnpm (v10+ recommended)
- Docker (for PostgreSQL)
Tech Stack
- Build System: Turborepo
- Package Manager: pnpm 10
- Backend: NestJS 11, Prisma 6
- Frontend: Next.js 16, React 19
- Mobile: Expo 54, React Native 0.81
- Desktop: Electron with Forge
- Styling: Tailwind CSS 4
- Language: TypeScript 5.9
- Testing: Jest, ts-jest
Project Structure
`
templates/ # App templates for CLI generator
api/ # NestJS backend template
web/ # Next.js frontend template
mobile/ # Expo mobile template
desktop/ # Electron desktop templatepackages/
ui/ # Shared React components
eslint-config/ # ESLint presets
typescript-config/ # TSConfig presets
i18n/ # Shared i18n config
server-shared/ # NestJS shared utilities
shared/
consts/ # Shared constants
types/ # Shared TypeScript types
exception/ # Exception codes
utils/ # Shared utilities
``MIT