PEST.js is an advanced template engine that generates production-ready Node.js applications with enterprise-grade architecture and modern development practices. It focuses on progressive enhancement, allowing your application to grow seamlessly from a simple API to a full-scale enterprise system.
- 🏗️ Progressive Architecture: Scale from simple to complex without restructuring
- 🔒 Enterprise Security: Industry-standard security practices built-in
- 📦 Intelligent Defaults: Smart configurations that adapt to your needs
- 🔍 TypeScript-First: Built for type safety and modern development
- 🧪 Testing Framework: Comprehensive testing suite included
- 📚 Self-Documenting: Automated API documentation generation
- 🐳 Container-Ready: Containerization support from day one
- 📝 Observable: Logging and monitoring built-in
- 🚀 Start Small, Grow Big: Perfect for both MVPs and enterprise applications
- 🎯 Production-First: No need to restructure for production
- 📦 Zero-Config: Works out of the box with smart defaults
- 🔒 Type-Safe: Catch errors before they happen
- 🏗️ Feature-Based: Organized for maintainability
- 🧪 Test-Driven: Testing infrastructure ready to go
- 📚 Well Documented: Clear, automated documentation
- 🐳 Cloud-Native: Ready for modern deployment
This script creates a complete project structure with all necessary configuration files for a modern Node.js application. It sets up a feature-based architecture that follows best practices and includes essential tools and configurations.
- 🚀 Automated project scaffolding
- 📁 Feature-based folder structure
- ⚙️ Pre-configured TypeScript setup
- 🔒 Environment configuration with validation
- 🗃️ MongoDB/Mongoose integration
- 🔑 Authentication boilerplate
- 📝 Logging setup
- 🧪 Testing infrastructure
- 🐳 Docker configuration
- 💅 Code formatting and linting setup
- Bash shell
- Basic command line knowledge
Here's the updated version of your instructions in a clean, professional format for a repository README:
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nabinkhair42/mern-stater-kit/main/setup.sh" -OutFile "setup.sh"
Or, if curl
is installed:
curl.exe -O https://raw.githubusercontent.com/nabinkhair42/mern-stater-kit/main/setup.sh
curl -O https://raw.githubusercontent.com/nabinkhair42/mern-stater-kit/main/setup.sh
chmod +x setup.sh
chmod +x setup.sh
(PowerShell does not require this step.)
./setup.sh
bash setup.sh
(Requires WSL, Git Bash, or a compatible shell.)
When prompted, enter your project name or press Enter to use the default name.
The script creates the following structure:
project-root/
├───docs
│ └───api
├───scripts
├───src
│ ├───config
│ ├───features
│ │ ├───auth
│ │ │ ├───controllers
│ │ │ ├───models
│ │ │ ├───routes
│ │ │ ├───schemas
│ │ │ └───services
│ │ └───users
│ │ ├───controllers
│ │ ├───models
│ │ ├───routes
│ │ ├───schemas
│ │ └───services
│ ├───middleware
│ ├───types
│ └───utils
└───tests
├───fixtures
├───integration
└───unit
The script creates and configures the following files:
package.json
- Project dependencies and scriptstsconfig.json
- TypeScript configuration.env
,.env.example
,.env.test
- Environment configurationsDockerfile
anddocker-compose.yml
- Docker setup
.eslintrc.js
- ESLint configuration.prettierrc
- Prettier configuration.gitignore
- Git ignore rulesjest.config.js
- Jest testing configuration
src/app.ts
- Application entry pointsrc/config/
- Configuration files for database, environment, etc.- Feature modules with MVC structure
- Utility scripts for database seeding and documentation generation
After running the script:
-
Navigate to your project directory:
cd your-project-name
-
Install dependencies:
npm install
-
Update the
.env
file with your configuration -
Start development:
npm run dev
The generated project includes several npm scripts:
npm run dev
- Start development servernpm run build
- Build for productionnpm start
- Start production servernpm run lint
- Run ESLintnpm run format
- Run Prettiernpm test
- Run testsnpm run seed
- Run database seedingnpm run docs
- Generate API documentation
Feel free to submit issues and enhancement requests to our GitHub repository!