A cookiecutter template to create REST API with ExpressJS and MongoDB, with JWT authentication.
- Registration
- Login
- JWT authentication
- Private routes example
- Schema Validation check (email validation, minimum characters, etc.)
- Password Encryption
- MongoDB Database
- API rate limit
- Clone the project
git clone https://github.com/udz-codes/express-rest-boilerplate.git
- Install packages
npm install
- Setup environment variables: Create .env file in root of the project and set 3 enviroment variables
PORT = ""
DB_URL = ""
JWT_SECRET = ""
PORT: Port number for local host
DB_URL: MongoDB URL, You can use MongoDB Atlas as database
JWT_SECRET: A random string that will be used for JWT encoding and authentication
- Run the project
node app.js
OR, if you have nodemon installed
npm start
Endpoint | Purpose | Features |
---|---|---|
/ | Homepage | None |
/api/user/register | Registration route that saves information of a new user on the database | Duplicate user check, password hashing |
/api/user/login | Login route that returns token on successful login | User existance check, Password match check, JWT Creation |
/api/private | Example private route that can't be accessed without a token | "auth-token" header is required, which means user must be logged in to access this route |
Examples | ||
Endpoint | Purpose | Link |
/api/examples/pagination/products?limit=100&page=3 | Demonstrating Pagination | paginationExample.js |
Package | Version | Purpose |
---|---|---|
express | ^4.18.2 | Creating the REST API |
jsonwebtoken | ^9.0.2 | Generating JWT and Authenticating it |
mongoose | ^6.12.0 | Connecting to MongoDB |
bcryptjs | ^2.4.3 | Hashing the password |
@hapi/joi | ^17.1.1 | Schema validation check |
joi | ^17.10.2 | Schema validation check |
dotenv | ^10.0.0 | Loads environment variables |
cors | ^2.8.5 | enable CORS |
express-rate-limit | ^7.1.0 | Rate limiting for Users |
Contributions are welcomed, to learn more about it, please check Contributing.md.