bootstrap-express-app v1.2.0
ExpressJs-Best-Practices-Boilerplate
Introduction
ExpressJs-Best-Practices-Boilerplate is a boilerplate for building ExpressJs applications with basic user CRUD and login/logout functionality. It uses the Express framework and MongoDB for database storage.
Prerequisites
- Node.js version v20.10.0
- Git
- MongoDB
- Postman
Installation
- Initialization command:
npx bootstrap-express-app my-app cd my-app
- Start Project:
npm start
Documentation
Postman Collection:
- Find the Postman collection in the "postman collection doc" folder.
- Import Postman collection JSON file from postman
Swagger Documentation:
Create command:
- After adding inline documentation comments and schemas to newly created or modified endpoint routes, run the following command to generate the Swagger documentation JSON file.
npm run create-swagger-doc
- For Inline documentation comments and schemas click here
- After adding inline documentation comments and schemas to newly created or modified endpoint routes, run the following command to generate the Swagger documentation JSON file.
Usage:
- For Swagger documentation, first, start the server and navigate to the '/api-docs' route. Ex. http://localhost:3000/api-docs
Usage
Development Environment:
To start the server in the local environment
npm run dev
Production Environment:
To start the server in the production environment
npm run prod
Monitoring Logs:
To watch logs in the production environment
pm2 logs
Reloading Instances:
To reload all instances of the production environment
npm run prod-reload
Stopping Instances:
To stop all instances of the production environment
npm run prod-stop
Authentication Flow
- When a user logs in with valid credentials, the server sends both an access token and a refresh token as cookies.
- All protected routes require token validation for access.
- If a protected route returns a status code of 401 (Unauthorized), the client needs to send a request to the '/auth/refresh_token' endpoint.
- The '/auth/refresh_token' endpoint validates the refresh token, and if valid, generates a new pair of access and refresh tokens.
If the refresh token is not valid, an error response with a status code of 401 is sent, requiring the user to log in again.
Git Best Practices
Commit Standards
Atomic Commits: Each commit should represent a single logical change. Avoid combining unrelated changes in a single commit.
Meaningful Commit Messages: Write clear and concise commit messages that describe the purpose of the change. Follow the imperative mood (e.g., "Add feature" instead of "Added feature").
Commit Types: Commit type must be following one:
- feat: A new feature
- fix: A bug fix
- style: Changes that doesn't affect meaning of code(semi-colon, indentation, etc)
- perf: Improve performance
- refactor: Refactor code
- test: Add missing test cases
- docs: Documentation only change
- chore: Change in auxiliary tools like documentation or seed change
Reference Issues: If your commit is related to a specific issue or task, reference it in the commit message. For example,
fix: #123
orfeat: #456
. Here #123 or #456 are ticket Id.
Branch Name Standards
Use Hyphens for Branch Names: Use hyphens to separate words in branch names. For example, use
feature-branch
instead offeature_branch
orfeatureBranch
.Prefix Branch Names: Prefix branch names with a category or type. For example:
feature/
for feature branchesfix/
for fix branches