backend-scaffold-cli
v2.5.1
Published
CLI tool to scaffold Express.js backend projects with MongoDB, middleware, and common setup
Maintainers
Readme
backend-scaffold-cli
A CLI tool to quickly scaffold Express.js backend projects with MongoDB, middleware, and common setup. It automatically generates production-ready projects with JWT authentication (including working register/login endpoints), error handling, request logging, input validation, and pre-configured MongoDB Atlas connection. Every project has different requirements, so this tool provides a solid, common foundation that developers can easily modify, extend, or trim according to their specific needs.
Features
✨ Quick Setup
- Complete folder structure
- Pre-configured Express server with graceful shutdown (SIGTERM/SIGINT)
- MongoDB Atlas connection (cloud-based)
- Environment variables template
- Optional DNS override (for networks with MongoDB SRV lookup issues)
🔐 Security
- JWT authentication with working register/login endpoints
- Password hashing with bcryptjs (configurable salt rounds)
- Helmet security headers
- Error handling middleware (including Multer-specific errors)
- CORS configuration
- Rate limiting with stricter limits on auth routes (brute-force protection)
- JWT_SECRET validation at startup (blocks default/missing secrets)
📝 Developer Experience
- Logging middleware
- Input validation with Joi (actually applied to auth routes)
- File upload support with multer (optional)
- Axios utility for external API calls (optional)
- Sample routes, User model, and auth controller
- Git initialization (with graceful fallback if Git isn't installed)
- Auto dependency installation (with graceful failure handling)
- Non-interactive mode with
--yesflag for scripting/CI
Installation
Using npx (Recommended)
npx backend-scaffold-cli@latest my-app
cd my-app
npm startGlobal Installation
npm install -g backend-scaffold-cli@latest
create-express-backend my-appTip: Always use
@latestto ensure you get the newest version with all features and bug fixes.
Usage
Interactive Mode
npx backend-scaffold-cli@latest <project-name>You'll be prompted to select features:
- ✅ Include JWT authentication (adds bcryptjs, User model, and register/login endpoints)
- ✅ Include input validation
- ✅ Use custom DNS (only needed if MongoDB connection fails due to DNS issues)
- ✅ Include rate limiting
- ✅ Include file upload support (multer)
- ✅ Include axios (for external API calls)
- ✅ Install dependencies
Non-Interactive Mode
Skip all prompts and accept defaults:
npx backend-scaffold-cli@latest my-app --yesAfter setup, copy .env.example to .env, configure your MongoDB URI and a secure JWT_SECRET, then run:
npm startTest it's working:
curl http://localhost:5000/api/healthIf JWT authentication is enabled, test registration:
curl -X POST http://localhost:5000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"name":"Test User","email":"[email protected]","password":"password123"}'Project Structure
my-app/
├── src/
│ ├── config/
│ │ └── db.js
│ ├── middleware/
│ │ ├── errorHandler.js
│ │ ├── logger.js
│ │ ├── auth.js
│ │ ├── validation.js
│ │ ├── rateLimiter.js
│ │ └── upload.js
│ ├── routes/
│ │ └── index.js
│ ├── controllers/
│ │ └── authController.js
│ ├── models/
│ │ └── User.js
│ ├── utils/
│ │ └── axiosUtil.js
│ ├── validation/
│ │ └── authValidation.js
│ └── server.js
├── uploads/
├── .env.example
├── .gitignore
└── package.json
Environment Variables
# Server Configuration
PORT=5000
NODE_ENV=development
# MongoDB Configuration
MONGODB_URI=mongodb+srv://username:[email protected]/dbname
DB_NAME=myapp
# DNS Configuration (only present if DNS fix is enabled)
DNS_SERVERS=8.8.8.8,8.8.4.4
# JWT Configuration
JWT_SECRET=your-secret-key-change-this-in-production
JWT_EXPIRE=7d
BCRYPT_SALT_ROUNDS=10
# CORS (set to your frontend URL; use a specific domain in production)
CORS_ORIGIN=http://localhost:3000
# External API (only present if axios is enabled)
API_BASE_URL=Important: The server will refuse to start if
JWT_SECRETis missing or left as the default placeholder value. Always set a strong, unique secret before running in any environment.
Included Middleware
| Middleware | Purpose | Optional | |-----------|---------|----------| | Error Handler | Catches and formats all errors (including Multer errors) | No | | Logger | Logs request method, path, status, timing | No | | Auth (JWT) | Protects routes with token verification | Yes | | Validation | Validates request body with Joi (applied to auth routes) | Yes | | Rate Limiter | Prevents API abuse (100 req/15min general, 5 req/15min on auth) | Yes | | Upload (Multer) | Handles image file uploads | Yes |
Testing
Run the CLI's own test suite (integration tests that actually generate and verify projects):
npm testLicense
MIT
Repository
https://github.com/abhi-0605/express-backend
