/express-mongoDB-typescript-restAPI-quickstarter

express-mongoDB-typescript-restAPI-template for starting a brand new project!

Primary LanguageTypeScript

Express, Mongodb, Typescript RestAPI Service

Clarification and credit ๐Ÿ“œ

This repo is direct copied and improvised from this repo. A big applause for the author morshedmasud ๐Ÿ‘๐Ÿ‘๐Ÿ‘

Technology used ๐Ÿ› ๏ธ

  1. Node

  2. Express JS

  3. Typescript

  4. MongoDB

Features โœจ

  • User SignIn/SignUp

  • Basic Authentication with jwt-http

  • OAuth 2.0 (Authentication with Access & Refresh Token)

  • Data Validation with JOI

  • Unit Testing

  • Email Verification

  • Docker Configuration

  • Swagger Documentation

Folder structure ๐Ÿ“


.

โ”œโ”€โ”€ .env.example

โ”œโ”€โ”€ .eslintrc.json

โ”œโ”€โ”€ .git

โ”‚ โ”œโ”€โ”€ FETCH_HEAD

โ”‚ โ”œโ”€โ”€ HEAD

โ”‚ โ”œโ”€โ”€ config

โ”‚ โ”œโ”€โ”€ description

โ”‚ โ”œโ”€โ”€ hooks

โ”‚ โ”‚ โ”œโ”€โ”€ applypatch-msg.sample

โ”‚ โ”‚ โ”œโ”€โ”€ commit-msg.sample

โ”‚ โ”‚ โ”œโ”€โ”€ fsmonitor-watchman.sample

โ”‚ โ”‚ โ”œโ”€โ”€ post-update.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-applypatch.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-commit.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-merge-commit.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-push.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-rebase.sample

โ”‚ โ”‚ โ”œโ”€โ”€ pre-receive.sample

โ”‚ โ”‚ โ”œโ”€โ”€ prepare-commit-msg.sample

โ”‚ โ”‚ โ”œโ”€โ”€ push-to-checkout.sample

โ”‚ โ”‚ โ””โ”€โ”€ update.sample

โ”‚ โ”œโ”€โ”€ index

โ”‚ โ”œโ”€โ”€ info

โ”‚ โ”‚ โ””โ”€โ”€ exclude

โ”‚ โ”œโ”€โ”€ logs

โ”‚ โ”‚ โ”œโ”€โ”€ HEAD

โ”‚ โ”‚ โ””โ”€โ”€ refs

โ”‚ โ”œโ”€โ”€ objects

โ”‚ โ”‚ โ”œโ”€โ”€ info

โ”‚ โ”‚ โ””โ”€โ”€ pack

โ”‚ โ”œโ”€โ”€ packed-refs

โ”‚ โ””โ”€โ”€ refs

โ”‚ โ”œโ”€โ”€ heads

โ”‚ โ”œโ”€โ”€ remotes

โ”‚ โ””โ”€โ”€ tags

โ”œโ”€โ”€ .gitignore

โ”œโ”€โ”€ Dockerfile

โ”œโ”€โ”€ README.md

โ”œโ”€โ”€ custom.d.ts

โ”œโ”€โ”€ docker-compose.yml

โ”œโ”€โ”€ jest.config.js

โ”œโ”€โ”€ package.json

โ”œโ”€โ”€ src

โ”‚ โ”œโ”€โ”€ app.ts

โ”‚ โ”œโ”€โ”€ config

โ”‚ โ”‚ โ”œโ”€โ”€ cors.ts

โ”‚ โ”‚ โ”œโ”€โ”€ express-rate.ts

โ”‚ โ”‚ โ”œโ”€โ”€ express-slow-down.ts

โ”‚ โ”‚ โ”œโ”€โ”€ logger.ts

โ”‚ โ”‚ โ”œโ”€โ”€ mongoose.ts

โ”‚ โ”‚ โ”œโ”€โ”€ morgan.ts

โ”‚ โ”‚ โ”œโ”€โ”€ passport-http.ts

โ”‚ โ”‚ โ”œโ”€โ”€ passport-jwt.ts

โ”‚ โ”‚ โ””โ”€โ”€ server.ts

โ”‚ โ”œโ”€โ”€ controllers

โ”‚ โ”‚ โ”œโ”€โ”€ auth.controller.ts

โ”‚ โ”‚ โ””โ”€โ”€ user.controller.ts

โ”‚ โ”œโ”€โ”€ middleware

โ”‚ โ”‚ โ””โ”€โ”€ auth.ts

โ”‚ โ”œโ”€โ”€ models

โ”‚ โ”‚ โ””โ”€โ”€ user.model.ts

โ”‚ โ”œโ”€โ”€ routes

โ”‚ โ”‚ โ”œโ”€โ”€ auth.route.ts

โ”‚ โ”‚ โ””โ”€โ”€ user.route.ts

โ”‚ โ”œโ”€โ”€ services

โ”‚ โ”‚ โ”œโ”€โ”€ __tests__

โ”‚ โ”‚ โ””โ”€โ”€ user.service.ts

โ”‚ โ”œโ”€โ”€ utils

โ”‚ โ”‚ โ”œโ”€โ”€ ApiError.ts

โ”‚ โ”‚ โ”œโ”€โ”€ catchAsync.ts

โ”‚ โ”‚ โ”œโ”€โ”€ constants.ts

โ”‚ โ”‚ โ”œโ”€โ”€ email.ts

โ”‚ โ”‚ โ”œโ”€โ”€ response.ts

โ”‚ โ”‚ โ”œโ”€โ”€ tokens.ts

โ”‚ โ”‚ โ””โ”€โ”€ validationError.ts

โ”‚ โ””โ”€โ”€ validations

โ”‚ โ””โ”€โ”€ auth.validation.ts

โ”œโ”€โ”€ swagger.json

โ”œโ”€โ”€ tsconfig.json

โ””โ”€โ”€ yarn.lock

Setup in your local machine, and running ๐Ÿ–ฅ๏ธ

  1. Clone project ๐Ÿ–ฑ๏ธ

git clone git@github.com:morshedmasud/express-mongoDB-typescript-restAPI-starter.git

  1. Go to project root path and install all dependency with ๐Ÿ’ป

yarn install

  1. Don't forget to create .env file as like .env.example and put necessary values like DB Info, Email Info ๐Ÿชต
cp  .env.example  .env
  1. Start your mongodb service ๐Ÿ’พ

  2. Run the project ๐Ÿš€

//  development  server

yarn  run  dev

  

//  build  project

yarn  build

  

//  production  server

yarn  run  start
  1. Run With Docker ๐Ÿ›ฅ๏ธ
//  build

sudo  docker-compose  build

  

//  run

sudo  docker-compose  up
  1. Testing ๐Ÿงช
//  run  all  unit-test

yarn  run  test:unit

  

//  run  individual  unit-test  file

yarn  run  test:unit  src/services/__tests__/auth.ts

Open the following url for view swagger documentation