A full-stack TypeScript monorepo template with React 19, React Router v7, Vite, TailwindCSS and NestJS.
- 🚀 Modern Stack: React 19 + Vite + TailwindCSS
- ⚡ Full-stack: Frontend (SPA/SSR) + Backend (NestJS)
- 📦 Monorepo: Managed by TurboRepo with pnpm workspaces
- 🛠 Developer Experience: ESLint + Prettier + Husky
- 🔄 CI/CD Ready: Changesets for versioning and publishing
- pnpm workspaces
- TurboRepo
- ESLint + Prettier
- Husky (Git hooks)
- Changesets (Version management)
- Node.js >=20.12.0
- pnpm
pnpm install
# Start all apps in development mode
pnpm dev
pnpm build:prod
modern-monorepo-template/
├── apps/
│ ├── be/ # NestJS backend
│ ├── spa/ # SPA frontend (Vite)
│ └── ssr/ # SSR frontend (Vite)
├── packages/ # Shared packages
├── docs/ # Documentation
├── .eslintrc.js # ESLint config
├── .prettierrc # Prettier config
├── package.json # Root package
└── turbo.json # TurboRepo config
- Development server: http://localhost:5173
- Build command:
pnpm build:prod
in spa directory
- Development server: http://localhost:5174
- Production server: http://localhost:3001
- Build command:
pnpm build:prod
in ssr directory
- Development server: http://localhost:3000
- Production server: http://localhost:3000 (when deployed with PM2)
- Build production artifacts:
pnpm build:prod
- Start with PM2:
pnpm pm2
- ESLint for static analysis
- Prettier for code formatting
- Husky for pre-commit hooks
- Conventional Commits for commit messages
This project uses Changesets for version management:
- Create changeset:
pnpm changeset
- Version packages:
pnpm version
- Publish:
pnpm release
ISC