Need help with express-mongodb-rest-api-boilerplate?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

watscho
141 Stars 27 Forks MIT License 58 Commits 0 Opened issues

Description

A boilerplate for Node.js apps / Rest API / Authentication from scratch - express, mongodb (mongoose).

Services available

!
?

Need anything else?

Contributors list

# 112,291
PHP
GraphQL
Express
Mongoos...
31 commits

express-mongodb-rest-api-boilerplate

Also express-graphql-mongodb-boilerplate - GraphQL API Boilerplate

GitHub license

Authentication from scratch

Sign In, Sign Up, Reset Password, Change Password, Update User

E-mail verification, Multi language, Redis for token blacklisting

Package list

| Package | Description | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | bcryptjs | Optimized bcrypt in JavaScript with zero dependencies. Compatible to the C++ bcrypt binding on node.js and also working in the browser. | | cors | CORS is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options. | | crypto-random-string | Generate a cryptographically strong random string | | dotenv | Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology. | | ejs | Embedded JavaScript templates | | email-templates | Create, preview, and send custom email templates for Node.js. Highly configurable and supports automatic inline CSS, stylesheets, embedded images and fonts, and much more! Made for sending beautiful emails with Lad. | | express | Fast, unopinionated, minimalist web framework for node. | | http-status-codes | Constants enumerating the HTTP status codes. | | i18next | i18next is a very popular internationalization framework for browser or any other javascript environment (eg. node.js). | | i18next-express-middleware | This is a middleware to use i18next in express.js. | | ioredis | A robust, performance-focused and full-featured Redis client for Node.js. | | jsonwebtoken | This was developed against draft-ietf-oauth-json-web-token-08. It makes use of node-jws | | module-alias | Create aliases of directories and register custom module paths in NodeJS like a boss! | | moment | A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. | | mongoose | Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Mongoose supports both promises and callbacks. | | nodemailer | Send e-mails from Node.js – easy as cake! | | validator | A library of string validators and sanitizers. | | winston | A logger for just about everything. |

Redis

Mac (using homebrew):

brew install redis

Linux:

sudo apt-get install redis-server

First, we use yarn - workspaces with lerna

Introducing Yarn Workspaces

cd workspaces/api

COPY .env.example to .env

cp .env.example .env

Note: I highly recommend installing nodemon.

nodemon is a tool that helps develop node.js based applications by automatically restarting the node application when file changes in the directory are detected. nodemon does not require any additional changes to your code or method of development. nodemon is a replacement wrapper for

node
, to use
nodemon
replace the word
node
on the command line when executing your script.
yarn global add nodemon
.

API Start

yarn start
yarn start:local # with nodemon

Docker compose

docker-compose up -d --build
docker-compose -f docker-compose.dev.yml up --build # with nodemon

ESlint Start

yarn lint
yarn lint:write # with prefix --fix

API Structure

├─ src
│  ├─ i18next
│  │  ├─ locales
│  │  │  ├─  en.json
│  │  │  └─  ge.json
│  │  └─ index.js
│  ├─ middleware
│  │  ├─ authentication.js
│  │  ├─ authMiddleware.js
│  │  └─  index.js
│  ├─ module
│  │  ├─ auth
│  │  │  ├─ mail
│  │  │  │  ├─ index.js
│  │  │  │  └─ userMail.js
│  │  │  ├─ service
│  │  │  │  ├─ index.js
│  │  │  │  └─ userService.js
│  │  │  ├─ authController.js
│  │  │  ├─ index.js
│  │  │  └─ user.js
│  │  └─ index.js
│  ├─ route
│  │  ├─ auth.js
│  │  └─ index.js
│  ├─ service
│  │  ├─ logger.js
│  │  └─ nodemailer.js
│  ├─ validator
│  │  ├─ index.js
│  │  └─ userValidator.js
│  ├─ view
│  │  └─ template
│  │     ├─ reset-password
│  │     │  └─ html.ejs
│  │     ├─ verify
│  │     │  └─ html.ejs
│  │     └─ verify-request
│  │        └─ html.ejs
│  ├─ index.js
│  ├─ mongoose.js
│  └─ redis.js
├─ .dockerignore
├─ .env.example
├─ .eslintignore
├─ .eslint
├─ .gitignore
├─ Dockerfile
├─ Dockerfile.dev
├─ LICENSE
├─ README.md
├─ docker-compose.dev.yml
├─ docker-compose.yml
└─ package.json

API Endpoints

Note: For any question issues

License

This project is an open-source with an MIT License

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.