create-bodhi-node-boilerplate
v1.3.0
Published
Create a Node.js project with basic folder structure and server setup
Maintainers
Readme
Create Bodhi Node Boilerplate
A powerful Node.js boilerplate generator with JWT authentication, MongoDB integration, and a beautiful ASCII art banner.
Installation & Usage
You can create a new project in three ways:
1. Using npx (Recommended)
# Create a new project
npx create-bodhi-node-boilerplate my-project
# Navigate to project
cd my-project
# Install dependencies
npm install
# Start development server
npm run dev2. Using npm globally
# Install package globally
npm install -g create-bodhi-node-boilerplate
# Create a new project
create-bodhi-node-boilerplate my-project
# Navigate to project
cd my-project
# Install dependencies
npm install
# Start development server
npm run dev3. Using npm init
# Create a new project
npm init bodhi-node-boilerplate my-project
# Navigate to project
cd my-project
# Install dependencies
npm install
# Start development server
npm run devFeatures
- 🚀 Express.js server setup
- 🔐 JWT Authentication (access & refresh tokens)
- 📦 MongoDB integration
- 🎨 Beautiful ASCII art banner
- 🔄 Auto-reload with nodemon
- ⚡ Environment variable configuration
- 🛡️ CORS enabled
- 🎯 Clean project structure
A production-ready Node.js REST API boilerplate with authentication, security, and best practices built-in.
A Note from the Creator 💭
Just as frontend developers have create-react-app to jumpstart their React projects, backend developers deserve a robust solution for Node.js applications. That's why I created bodhi-node-boilerplate - to provide backend developers with a production-ready, feature-rich foundation for their REST APIs.
No more spending hours on boilerplate code or worrying about security configurations. With Bodhi Node App, you get a professionally structured Node.js application with all the essential features you need to build secure, scalable APIs.
Created with ❤️ by Bodheesh
Support 🌟
If you find this project helpful, please give it a star ⭐ on GitHub! It helps more developers discover this tool.
Why Bodhi Node App? 🤔
While frontend developers have had tools like create-react-app for years, backend developers have been left to configure their Node.js applications from scratch. Bodhi Node boilerplate changes that by providing:
- 🔒 Production-ready JWT authentication
- 🛡️ Security best practices out of the box
- 📝 API documentation with examples
- 🔄 Refresh token rotation
- 🎯 Clean and scalable project structure
Project Structure
my-project/
├── src/
│ ├── config/
│ │ └── config.js # Configuration management
│ ├── controllers/
│ │ ├── authController.js # Authentication logic
│ │ └── userController.js # User management
│ ├── middleware/
│ │ └── auth.js # JWT verification
│ ├── models/
│ │ └── userModel.js # User schema and methods
│ ├── routes/
│ │ ├── authRoutes.js # Auth endpoints
│ │ └── userRoutes.js # User endpoints
│ ├── utils/
│ │ └── ascii-art.js # ASCII banner
│ └── app.js # Express app setup
├── .env # Environment variables
└── package.json # Project dependenciesAPI Endpoints
Authentication
POST /api/v1/auth/register- Register a new userPOST /api/v1/auth/login- Login userGET /api/v1/auth/me- Get current user profile (protected)POST /api/v1/auth/refresh-token- Refresh access tokenPOST /api/v1/auth/logout- Logout user (protected)
User Management
PUT /api/v1/users/profile- Update user's profile (protected)DELETE /api/v1/users/account- Delete user's account (protected)
API Testing
Using cURL
Authentication APIs
- Register a new user
curl -X POST http://localhost:7000/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "johndoe",
"email": "[email protected]",
"password": "password123"
}'- Login
curl -X POST http://localhost:7000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "password123"
}'- Get Current User Profile (Protected)
curl -X GET http://localhost:7000/api/v1/auth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"- Refresh Token
curl -X POST http://localhost:7000/api/v1/auth/refresh-token \
-H "Content-Type: application/json" \
-d '{
"refreshToken": "YOUR_REFRESH_TOKEN"
}'- Logout (Protected)
curl -X POST http://localhost:7000/api/v1/auth/logout \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"User Management APIs
- Update User Profile (Protected)
curl -X PUT http://localhost:7000/api/v1/users/profile \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "johndoe_updated",
"email": "[email protected]"
}'- Delete Account (Protected)
curl -X DELETE http://localhost:7000/api/v1/users/account \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Using Postman
Download the Postman collection:
Import the collection in Postman:
- Open Postman
- Click "Import"
- Choose the downloaded collection file
Set up environment variables in Postman:
- Create a new environment (e.g., "Bodhi Local")
- Add these variables:
baseUrl: http://localhost:7000accessToken: (will be automatically set after login)refreshToken: (will be automatically set after login)
Test Flow:
- Register a new user
- Login to get tokens
- Use other endpoints with the obtained token
Example API Responses
- Successful Registration
{
"success": true,
"message": "User registered successfully",
"data": {
"user": {
"id": "user_id",
"username": "johndoe",
"email": "[email protected]"
}
}
}- Successful Login
{
"success": true,
"message": "Login successful",
"data": {
"user": {
"id": "user_id",
"username": "johndoe",
"email": "[email protected]"
},
"tokens": {
"accessToken": "eyJhbG...",
"refreshToken": "eyJhbG..."
}
}
}Error Responses
{
"success": false,
"message": "Error message here",
"error": {
"code": "ERROR_CODE",
"details": "Detailed error message"
}
}Common error codes:
AUTH_INVALID_CREDENTIALS: Invalid email or passwordAUTH_TOKEN_EXPIRED: JWT token has expiredAUTH_TOKEN_INVALID: Invalid JWT tokenUSER_NOT_FOUND: User not foundVALIDATION_ERROR: Invalid input data
Environment Variables
The following environment variables are used:
PORT=7000 # Server port
NODE_ENV=development # Environment mode
MONGODB_URI=mongodb://127.0.0.1:27017/my-project # MongoDB connection URL
JWT_SECRET=your-secret # JWT signing key
JWT_REFRESH_SECRET=your-refresh-secret # Refresh token key
JWT_ACCESS_EXPIRE=15m # Access token expiry
JWT_REFRESH_EXPIRE=7d # Refresh token expiryPrerequisites
- Node.js >= 14
- MongoDB >= 4.0
Scripts
npm start- Start production servernpm run dev- Start development server with auto-reload
MongoDB Setup
- Install MongoDB Community Server from mongodb.com
- Start MongoDB service
- The app will automatically create the database on first run
Common Issues
MongoDB Connection Error
- Ensure MongoDB is running
- Check if the MongoDB URI in .env is correct
- Try using '127.0.0.1' instead of 'localhost'
Port Already in Use
- Change the PORT in .env file
- Default port is 7000
License
MIT
Contributing
Feel free to open issues and pull requests!
