A powerful, modern CLI tool for scaffolding production-ready JavaScript full-stack projects with extensive customization options and best practices built-in.
- β Available - Feature is fully implemented and ready to use
- π§ Coming Soon - Feature is planned and in development
- π New - Recently added features
- Get a complete full-stack project running in minutes
- Interactive prompts with smart defaults
- Skip prompts with command-line flags
- Programmatic API for automation
- β React - With Vite, TypeScript, and modern tooling
- β Vue.js - Vue 3 with Composition API and Vite
- β Angular - Latest Angular with CLI integration
- β Svelte - SvelteKit with optimized builds
- β Next.js - Full-stack React framework
- β Nuxt - Vue.js full-stack framework
- β React Native - Mobile app development
- β Express.js - Fast, minimalist web framework
- β Fastify - High-performance, low-overhead framework
- β Koa.js - Lightweight, expressive middleware framework
- β Hapi.js - Rich ecosystem with built-in validation
- β NestJS - Scalable Node.js framework with TypeScript
- β SQLite - Lightweight, serverless database
- β PostgreSQL - Advanced open-source database
- β MySQL - Popular relational database
- β MongoDB - NoSQL document database
- π§ Supabase - Open source Firebase alternative (Coming Soon)
- π§ PlanetScale - Serverless MySQL platform (Coming Soon)
- β Prisma - Next-generation ORM with type safety
- β Sequelize - Feature-rich ORM for SQL databases
- β Mongoose - Elegant MongoDB object modeling
- β TypeORM - Advanced ORM with decorator support
- β JWT - JSON Web Token implementation
- β Passport - Flexible authentication middleware
- β Auth0 - Identity platform integration
- π§ Firebase Auth - Google's authentication service (Coming Soon)
- π§ Clerk - Modern authentication platform (Coming Soon)
- π§ Lucia - Lightweight authentication library (Coming Soon)
- π§ Supabase Auth - Open source auth solution (Coming Soon)
- β Security middleware - Helmet, CORS, Rate limiting
- β TypeScript - Full TypeScript support across all templates
- β Docker - Complete containerization with Docker Compose
- β Testing - Jest, Vitest configurations
- π§ Cypress - E2E testing framework (Coming Soon)
- β Linting - ESLint with framework-specific rules
- β Formatting - Prettier with consistent configurations
- β Git Hooks - Husky for pre-commit validation
- β CI/CD - GitHub Actions workflows
- β npm - Node.js default package manager
- β yarn - Fast, reliable dependency management
- β pnpm - Efficient disk space usage
- β bun - All-in-one JavaScript runtime
- β Redis - Caching and session storage
- β Socket.IO - Real-time communication
- β Tailwind CSS - Utility-first CSS framework
- π§ Material UI - React component library (Coming Soon)
- π§ Bootstrap - Popular CSS framework (Coming Soon)
- β Environment Management - Complete .env configuration
- π§ API Documentation - Auto-generated Swagger/OpenAPI docs (Coming Soon)
- β Hot Reload - Development with instant updates
- π Turborepo - Monorepo support with workspace management
# Interactive setup (recommended)
npx create-js-stack init my-awesome-app
# With specific options
npx create-js-stack init my-app \
--backend nestjs \
--frontend react \
--database postgres \
--orm prisma \
--auth jwt \
--addons docker eslint prettier testing \
--pm pnpm
# Use defaults for rapid prototyping
npx create-js-stack init my-app --yesnpm install -g create-js-stack
create-js-stack init my-appnpx create-js-stack init my-app \
--backend express \
--frontend react \
--database postgres \
--orm prisma \
--auth jwt \
--addons docker tailwind testingnpx create-js-stack init enterprise-app \
--backend nestjs \
--frontend vue \
--database postgres \
--orm typeorm \
--auth passport \
--addons docker eslint prettier testing github-actionsnpx create-js-stack init nextjs-app \
--frontend nextjs \
--database mongodb \
--orm mongoose \
--auth auth0 \
--addons tailwind testingnpx create-js-stack init mobile-app \
--backend fastify \
--frontend react-native \
--database mongodb \
--orm mongoose \
--auth firebase \
--addons docker testingnpx create-js-stack init monorepo-app \
--backend express \
--frontend react vue \
--database postgres \
--orm prisma \
--auth jwt \
--addons turborepo typescript eslint prettierCreate a new full-stack project with all configurations.
Options:
-y, --yes- Use default configuration (Express + React + SQLite + Prisma)--backend <type>- Backend frameworkexpress- Express.js (default)fastify- Fastifykoa- Koa.jshapi- Hapi.jsnestjs- NestJSnone- No backend
--frontend <types...>- Frontend framework(s)react- React with Vite (default)vue- Vue.js 3angular- Angularsvelte- SvelteKitnextjs- Next.jsnuxt- Nuxt.jsreact-native- React Nativenone- No frontend
--database <type>- Database typesqlite- SQLite (default)postgres- PostgreSQLmysql- MySQLmongodb- MongoDBnone- No database
--orm <type>- ORM/ODMprisma- Prisma (default)sequelize- Sequelizemongoose- Mongoosetypeorm- TypeORMnone- No ORM
--auth <type>- Authenticationjwt- JSON Web Tokens βpassport- Passport.js βauth0- Auth0 integration βfirebase- Firebase Auth π§ (Coming Soon)clerk- Clerk Auth π§ (Coming Soon)lucia- Lucia Auth π§ (Coming Soon)none- No authentication (default)
--addons <addons...>- Additional toolstypescript- TypeScript support βeslint- ESLint linting βprettier- Code formatting βhusky- Git hooks βdocker- Docker containerization βgithub-actions- CI/CD workflows βtesting- Testing frameworks βtailwind- Tailwind CSS βturborepo- Monorepo with Turborepo πmaterial- Material UI (React/Angular) π§ (Coming Soon)bootstrap- Bootstrap CSS π§ (Coming Soon)redis- Redis caching βsocketio- Socket.IO real-time βcypress- E2E testing π§ (Coming Soon)swagger- API documentation π§ (Coming Soon)
--pm <manager>- Package managernpm- npm (default)yarn- Yarnpnpm- pnpmbun- Bun
--no-git- Skip git initialization--no-install- Skip dependency installation
Add features to an existing project.
Options:
--addons <addons...>- Additional tools to add--auth <type>- Add authentication system--database <type>- Add database support--install- Install dependencies after adding features
Examples:
# Add Docker and testing to existing project
create-js-stack add --addons docker testing
# Add authentication
create-js-stack add --auth jwt
# Add database with ORM
create-js-stack add --database postgres --orm prisma
# Add Turborepo monorepo structure
create-js-stack add --addons turborepoList all available options and their descriptions.
Options:
--backends- List backend frameworks--frontends- List frontend frameworks--databases- List database options--orms- List ORM/ODM options--auth- List authentication options--addons- List available addons
Open comprehensive documentation in your default browser.
Display the current version of create-js-stack CLI.
Use create-js-stack programmatically in your Node.js applications:
import { init, add, list } from "create-js-stack";
// Create a new project
const result = await init("my-app", {
backend: "nestjs",
frontend: ["react"],
database: "postgres",
orm: "prisma",
auth: "jwt",
addons: ["typescript", "docker", "testing"],
packageManager: "pnpm",
git: true,
install: true,
});
if (result.success) {
console.log(`β
Project created at: ${result.projectDir}`);
console.log(`π Generated files: ${result.filesGenerated}`);
console.log(`β±οΈ Setup time: ${result.setupTime}ms`);
} else {
console.error(`β Error: ${result.error}`);
}
// Add features to existing project
const addResult = await add({
addons: ["redis", "socketio"],
auth: "passport",
install: true,
});
// List available options
const options = await list();
console.log("Available backends:", options.backends);
console.log("Available frontends:", options.frontends);Creates a new full-stack project.
Parameters:
projectName(string) - Name of the project directoryoptions(object) - Configuration optionsbackend(string) - Backend frameworkfrontend(string[]) - Frontend framework(s)database(string) - Database typeorm(string) - ORM/ODM typeauth(string) - Authentication typeaddons(string[]) - Additional toolspackageManager(string) - Package managergit(boolean) - Initialize git repositoryinstall(boolean) - Install dependencies
Returns: Promise<{ success: boolean, projectDir?: string, error?: string }>
Adds features to an existing project.
Parameters:
options(object) - Features to addaddons(string[]) - Additional toolsauth(string) - Authentication systemdatabase(string) - Database supportinstall(boolean) - Install dependencies
Returns: Promise<{ success: boolean, error?: string }>
Returns all available options.
Returns: Promise<{ backends: string[], frontends: string[], databases: string[], orms: string[], auth: string[], addons: string[] }>
The generated project follows industry best practices with a well-organized structure:
my-awesome-app/
βββ π backend/ # Backend application
β βββ π src/ # Source code
β β βββ π server.js # Main server file
β β βββ π routes/ # API routes
β β βββ π middleware/ # Custom middleware
β β βββ π controllers/ # Route controllers
β β βββ π services/ # Business logic
β β βββ π models/ # Data models
β β βββ π utils/ # Utility functions
β βββ π tests/ # Backend tests
β βββ π package.json # Backend dependencies
β βββ π³ Dockerfile # Docker configuration
β βββ π .env.example # Environment variables template
βββ π frontend/ # Frontend application
β βββ π src/ # Source code
β β βββ π main.js # Application entry point
β β βββ π components/ # Reusable components
β β βββ π pages/ # Page components
β β βββ π hooks/ # Custom hooks (React)
β β βββ π store/ # State management
β β βββ π services/ # API services
β β βββ π utils/ # Utility functions
β β βββ π assets/ # Static assets
β βββ π public/ # Public static files
β βββ π tests/ # Frontend tests
β βββ π package.json # Frontend dependencies
β βββ π³ Dockerfile # Docker configuration
β βββ βοΈ vite.config.js # Build configuration
βββ π database/ # Database related files
β βββ π migrations/ # Database migrations
β βββ π seeds/ # Database seeds
β βββ π schema.prisma # Prisma schema (if using Prisma)
β βββ π config.js # Database configuration
βββ π shared/ # Shared utilities and types
β βββ π types/ # TypeScript type definitions
β βββ π constants/ # Shared constants
β βββ π utils/ # Shared utility functions
βββ π docker/ # Docker configurations
β βββ π³ docker-compose.yml # Development setup
β βββ π³ docker-compose.prod.yml # Production setup
β βββ π nginx/ # Nginx configuration (if applicable)
βββ π .github/ # GitHub configurations
β βββ π workflows/ # CI/CD workflows
βββ π docs/ # Project documentation
βββ π package.json # Root package.json (monorepo)
βββ π README.md # Project documentation
βββ π .env.example # Environment variables template
βββ π .gitignore # Git ignore rules
βββ π .eslintrc.js # ESLint configuration
βββ π .prettierrc # Prettier configuration
βββ π turbo.json # Turbo configuration (if monorepo)
βββ π LICENSE # License file
monorepo-app/
βββ π apps/ # Applications
β βββ π web/ # Web application
β β βββ π src/ # Source code
β β βββ π package.json # App dependencies
β β βββ π next.config.js # Next.js config
β βββ π server/ # Server application
β βββ π src/ # Source code
β βββ π package.json # App dependencies
β βββ π server.js # Main server file
βββ π packages/ # Shared packages
β βββ π ui/ # UI components
β β βββ π src/ # Component source
β β βββ π package.json # Package dependencies
β βββ π database/ # Database package
β β βββ π src/ # Database logic
β β βββ π package.json # Package dependencies
β βββ π shared/ # Shared utilities
β βββ π src/ # Shared code
β βββ π package.json # Package dependencies
βββ π configs/ # Shared configurations
β βββ π eslint/ # ESLint config
β βββ π typescript/ # TypeScript config
β βββ π prettier/ # Prettier config
βββ π package.json # Root package.json
βββ π turbo.json # Turborepo configuration
βββ π README.md # Project documentation
nextjs-app/
βββ π app/ # App Router (Next.js 13+)
β βββ π layout.tsx # Root layout
β βββ π page.tsx # Home page
β βββ π api/ # API routes
β βββ π (auth)/ # Route groups
βββ π components/ # React components
βββ π lib/ # Utilities and configurations
βββ π next.config.js # Next.js configuration
βββ π middleware.ts # Next.js middleware
nestjs-app/
βββ π src/
β βββ π main.ts # Application entry point
β βββ π app.module.ts # Root module
β βββ π auth/ # Authentication module
β βββ π users/ # Users module
β βββ π common/ # Shared code
β β βββ π decorators/ # Custom decorators
β β βββ π filters/ # Exception filters
β β βββ π guards/ # Route guards
β β βββ π interceptors/ # Interceptors
β βββ π database/ # Database configuration
βββ π nest-cli.json # Nest CLI configuration
βββ π tsconfig.json # TypeScript configuration
β Complete Configuration Files
- Package.json with all necessary dependencies
- TypeScript configuration (if selected)
- ESLint and Prettier configurations
- Environment variable templates
- Docker and Docker Compose files
- CI/CD workflow files
β Production-Ready Code
- Fully functional server with middleware
- Authentication system (if selected)
- Database models and connections
- API routes with proper error handling
- Frontend components with routing
- Testing setup and example tests
β Development Tools
- Hot reload for development
- Debugging configurations
- Git hooks for code quality
- Comprehensive README documentation
# Clone the repository
git clone https://github.com/vipinyadav01/js-stack-cli.git
cd js-stack
# Install dependencies
npm install
# Build the CLI
npm run build
# Link for local development
npm link
# Test locally
create-js-stack init test-project# Development
npm run dev # Watch mode with hot reload
npm run build # Build the CLI
npm run build:watch # Build in watch mode
# Testing
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Generate coverage report
npm run test:e2e # Run end-to-end tests
# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run format # Format code with Prettier
npm run type-check # TypeScript type checking
# Publishing
npm run prepublish # Prepare for publishing
npm run publish # Publish to npmCreate new templates in the templates/ directory:
templates/
βββ backend/
β βββ your-framework/
β βββ package.json.hbs
β βββ server.js.hbs
β βββ routes/
βββ frontend/
β βββ your-framework/
β βββ package.json.hbs
β βββ src/
βββ database/
βββ your-orm/
βββ models.js.hbs
- Add framework option in
src/types.js - Create templates in appropriate directory
- Update generator in
src/generators/ - Add tests for the new framework
- Update documentation
Templates use Handlebars with conditional logic:
# Test CLI generation
npm run test:cli
# Test specific templates
npm run test:templates -- --framework=react
# Test integration
npm run test:integration
# Manual testing
npm run build && npm link
create-js-stack init test-app --backend express --frontend react-
Fork and Clone
git clone https://github.com/vipinyadav01/js-stack-cli.git
-
Create Feature Branch
git checkout -b feature/amazing-feature
-
Make Changes
- Follow existing code style
- Add tests for new features
- Update documentation
-
Test Thoroughly
npm test npm run test:e2e -
Commit with Conventional Commits
git commit -m "feat: add support for new framework" -
Submit Pull Request
- Clear description of changes
- Link related issues
- Include screenshots if applicable
- ES6+ Features - Use modern JavaScript
- TypeScript - Prefer TypeScript for new code
- Functional Programming - Prefer pure functions
- Error Handling - Comprehensive error handling
- Documentation - JSDoc comments for functions
- Testing - Unit tests for all new features
When reporting issues, please include:
- Environment Details (OS, Node.js version, npm version)
- Command Used (exact command that failed)
- Expected Behavior vs Actual Behavior
- Error Messages (full stack trace)
- Reproduction Steps (minimal example)
Report security vulnerabilities to: vipinxdev@gmail.com
Do not open public issues for security vulnerabilities.
MIT License - see the LICENSE file for details.
- Vipin Yadav - Initial work and ongoing development
- Community contributions welcome! See CONTRIBUTING.md
- Create React App - Inspiration for CLI design patterns
- Next.js - Modern full-stack framework inspiration
- NestJS - Enterprise-grade architecture patterns
- Vite - Lightning-fast build tool integration
- Prisma - Next-generation ORM inspiration
- T3 Stack - Full-stack TypeScript best practices
- Better-T-Stack - Original inspiration for this project
Special thanks to the open-source community and all the maintainers of the frameworks and tools integrated into this CLI.
If this project helped you, please consider:
- β Starring the repository
- π Reporting issues and bugs
- π‘ Suggesting new features
- π€ Contributing code improvements
- π’ Sharing with the community
- Templates: 50+ production-ready templates
- Frameworks: 12+ supported frameworks
- Databases: 4 database types with 4 ORMs
- Languages: JavaScript & TypeScript
- Package Managers: 4 supported managers
- Authentication: 4 auth strategies
- Development Tools: 10+ integrated tools
- Monorepo Support: Turborepo integration
- Author: Vipin Yadav
- Documentation: https://create-js-stack.com/docs
- Examples: https://github.com/create-js-stack/examples
- Templates: https://github.com/create-js-stack/templates
- Community: https://discord.gg/create-js-stack
- Twitter: @CreateJSStack
Built with β€οΈ by Vipin Yadav
Website β’ Documentation β’ Examples β’ Community