Skip to content

Express.js API application (Node.js, TypeScript, Sequelize, NodeMailer, Docker, Postman, GitHub Actions)

Notifications You must be signed in to change notification settings

lukasondrejka/express-api-app

Repository files navigation

Express API App

Express.js Rest API application with authentication, email notifications, user management. The application is built with TypeScript, PostgreSQL, Sequelize ORM and Docker. Repository includes GitHub Actions for linting and testing the application with Postman and Chai.js.

Features

  • User authentication with email verification
  • JWT authentication (with JWT tokens stored in the database for revoking on logout before expiration)
  • User management (CRUD operations)
  • User roles (admin, user)

Documentation

Configuration

Configuration options are set in .env file. The majority of essential configuration options are available through environment variables. All configuration options are available in configs directory. Configuration options are documented in configuration.md.

Development setup

All necessary components of the application are containerized with Docker. docker-compose.yml defines services for the application and docker-compose.override.yml extends the configuration for development with hot-reloading.

Docker containers

  • Express.js application
  • PostgreSQL database
  • MailHog (email testing tool)
  • Nginx (web server for serving static files and reverse proxy)

Prerequisites

Setup

  1. Install dependencies

    npm --prefix app i
  2. Run docker containers

    docker-compose up

Scripts

Scripts must be run from app directory.

  • npm run dev - run application in development mode
  • npm run build - build application (output in build directory)
  • npm run start - run application in production mode from build directory
  • npm run lint - run lint and fix issues
  • npm run eslint - run lint
  • npm run test - run Postman tests

Application structure

  • app - application source code
    • src - source code
      • configs - configuration files
      • controllers - controllers
      • helpers - helper functions
      • middlewares - middlewares
      • models - models
      • routes - routes
      • app.ts - application
    • build - build output
    • views - templates
    • app.ts - application
    • index.ts - entry point

Resources

About

Express.js API application (Node.js, TypeScript, Sequelize, NodeMailer, Docker, Postman, GitHub Actions)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published