Giter Site home page Giter Site logo

torredefarol24 / nodets-mongojwt-chai Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 108 KB

Express TypeScript API Authentication with MongoDB, JWT & Unit Testing with Mocha / Chai

TypeScript 98.22% Dockerfile 1.78%
express typescript jwt bcrypt unit-testing typescript-tests mocha chai mongodb node-typescript

nodets-mongojwt-chai's Introduction

Node Authentication in TypeScript

Using

  • JWT (For Stateless Auth)
  • Chai + Mocha (For Testing)
  • Redis (For In-Memory DB)
  • MongoDB + Mongoose (For Persistent DB)
  • Express in TypeScript

To test this,

Run Docker Container

  • Pull Docker Image
$ cd nodets-mongojwt-chai
$ docker pull burningraven06/nodets-jwt-mongo-chai-rds
  • Start Mongo Container
$ docker pull mongo
$ docker run --name <MONGO_INSTANCE> -d mongo
  • Start Redis Container
$ docker pull redis
$ docker run --name <REDIS_INSTANCE> -d redis

# You may need to update your docker redis.conf
  • Start App & Link Containers
$ docker run --name <APP_INSTANCE> --link <MONGO_INSTANCE_NAME>:mongo --link <REDIS_INSTANCE> -p 5000:4000 -d burningraven06/nodets-jwt-mongo-chai-rds

# Visit localhost:5000 

Run App Locally

Create Necessary Files

  • Create DBKeys
$ cd nodets-mongojwt-chai
$ touch src/keys/dbKeys.ts
  • Update DBKEys
const dbKeys = {
  mongoLocalUrl : <YOUR_MONGODB_URI>,
  mongoDockerURL : ""
}

export default dbKeys
  • Create JWTSecrets
$ cd nodets-mongojwt-chai
$ touch src/keys/jwtSecret.ts
  • Update JWTSecrets
const jwtKeys = {
  tokenSecret : <YOUR_TOKEN_SECRET>,
  resfreshTokenSecret : <YOUR_REFRESHTOKEN_SECRET>
}

export default jwtKeys
  • Update src/app.ts
$ cd nodets-mongojwt-chai/src/   #Open app.ts

#Change Line 25
mongoDBConfig.dockerSetup()

# to
mongoDBConfig.localSetup()
  • Update src/controllers/user/authenticate.ts
$ cd nodets-mongojwt-chai/src/controllers/user/   #Open authenticate.ts

#Change Line 9
var redisDB = redis.createClient(6379, "redis")

# to 
var redisDB = redis.createClient(6379, "localhost")
  • Update src/controllers/user/refreshToken.ts
$ cd nodets-mongojwt-chai/src/controllers/user/   #Open refreshToken.ts

#Change Line 7
var redisDB = redis.createClient(6379, "redis")

# to 
var redisDB = redis.createClient(6379, "localhost")

INSTALL PACKAGE DEPENDENCIES

$ cd nodets-mongojwt-chai
$ yarn install
# or with npm

$ npm install

RUN TESTS

$ cd nodets-mongojwt-chai
$ yarn run watch-test-ts

RUN APP in DEV Mode

$ cd nodets-mongojwt-chai
$ yarn run watch-ts
$ yarn run watch-js

RUN IN PROD Mode

$ cd nodets-mongojwt-chai
$ yarn start

nodets-mongojwt-chai's People

Contributors

torredefarol24 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.