Build a REST API with Node.js, Mongoose & TypeScript

Note: This repository includes the postman collection for the finished API

Note 2: Make sure you add .env to your .gitignore before pushing any changes to your repository. You will also want to generate new public & private keys

Generate new keys: https://travistidwell.com/jsencrypt/demo/

Base64 encode the keys: https://www.base64encode.org/

What you will need

  • A running instance of MongoDB
  • Postman
  • An IDE or text editor (VS Code)
  • A web browser
  • A package manager such as NPM or Yarn
  • Node.js installed

What next?

  • Testing the API with Jest
  • Build a React.js user interface
  • Add Prometheus metrics to the API
  • Deploy the API with Caddy & Docker
  • Add Google OAuth

Concepts

  • REST API principals
    • CRUD
    • HTTP methods
  • JWT & refresh tokens
  • Request validation

Technologies

  • Node.js
  • MongoDB with Mongoose
  • TypeScript
  • Express.js & Express.js middleware
  • Zod validation

Data flow

Access & refresh token flow

Deployment

What will we use

  • Docker (image)
  • docker-compose (container)
  • Caddy – Web server
  • DigitalOcean

Note: You will need Docker installed locally if you want to test your Docker configutation

GitHub

View Github