libeyondea / backend-node-express

RESTful APIs using Node.js, Express, Passport and Mongoose

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RESTful API Node Express Mongoose Example

The project builds RESTful APIs using Node.js, Express and Mongoose, ...

Manual Installation

Clone the repo:

git clone https://github.com/libeyondea/backend-node-express.git
cd backend-node-express

Install the dependencies:

npm install

Set the environment variables:

cp .env.example .env
# open .env and modify the environment variables

Generate JWT RS256 key:

ssh-keygen -t rsa -P "" -b 2048 -m PEM -f storage/jwtRS256.key
ssh-keygen -e -m PEM -f storage/jwtRS256.key > storage/jwtRS256.key.pub
# encode base64
cat storage/jwtRS256.key | base64 # edit JWT_ACCESS_TOKEN_SECRET_PRIVATE in .env
cat storage/jwtRS256.key.pub | base64 # edit JWT_ACCESS_TOKEN_SECRET_PUBLIC in .env

Table of Contents

Commands

Running in development:

npm start
# or
npm run dev

Running in production:

# build
npm run build
# start
npm run prod

Environment Variables

The environment variables can be found and modified in the .env file.

# App name
APP_NAME = # default App Name

# Host
HOST = # default 0.0.0.0
# Port
PORT = # default 666

# URL of the Mongo DB
DATABASE_URI = mongodb://127.0.0.1:27017/database_name

# JWT
JWT_ACCESS_TOKEN_SECRET_PRIVATE =
JWT_ACCESS_TOKEN_SECRET_PUBLIC =
JWT_ACCESS_TOKEN_EXPIRATION_MINUTES = # default 240 minutes

# Token expires
REFRESH_TOKEN_EXPIRATION_DAYS = # default 1 day
VERIFY_EMAIL_TOKEN_EXPIRATION_MINUTES = # default 60 minutes
RESET_PASSWORD_TOKEN_EXPIRATION_MINUTES = # default 30 minutes

# SMTP configuration
SMTP_HOST = smtp.googlemail.com
SMTP_PORT = 465
SMTP_USERNAME =
SMTP_PASSWORD =
EMAIL_FROM =

# URL frontend
FRONTEND_URL = # default http://localhost:777

# URL images
IMAGE_URL = # default http://localhost:666/images

Project Structure

public\             # Public folder
 |--index.html      # Static html
src\
 |--config\         # Environment variables and configuration
 |--controllers\    # Controllers
 |--middlewares\    # Custom express middlewares
 |--models\         # Mongoose models
 |--routes\         # Routes
 |--services\       # Business logic
 |--utils\          # Utility classes and functions
 |--validations\    # Request data validation schemas
 |--index.js        # App entry point

API Endpoints

List of available routes:

Auth routes:
POST api/v1/auth/signup - Signup
POST api/v1/auth/signin - Signin
POST api/v1/auth/logout - Logout
POST api/v1/auth/refresh-tokens - Refresh auth tokens
POST api/v1/auth/forgot-password - Send reset password email
POST api/v1/auth/reset-password - Reset password
POST api/v1/auth/send-verification-email - Send verification email
POST api/v1/auth/verify-email - Verify email
POST api/v1/auth/me - Profile
PUT api/v1/auth/me - Update profile

User routes:
POST api/v1/users - Create a user
GET api/v1/users - Get all users
GET api/v1/users/:userId - Get user
PUT api/v1/users/:userId - Update user
DELETE api/v1/users/:userId - Delete user

Role routes:
POST api/v1/roles - Create a role
GET api/v1/roles - Get all roles
GET api/v1/roles/:userId - Get role
PUT api/v1/roles/:userId - Update role
DELETE api/v1/roles/:userId - Delete role

Image routes:
POST api/v1/images/upload - Upload image

License

MIT

About

RESTful APIs using Node.js, Express, Passport and Mongoose

License:MIT License


Languages

Language:JavaScript 98.1%Language:HTML 1.2%Language:Shell 0.7%Language:Procfile 0.0%