nest-boilerplate

Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, TypeORM

Stars
95

Nest - Boilerplate

Table of contents


Getting started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

What things you need to install the software and how to install them :


Installation

  1. Clone the git repository

    git clone https://github.com/smarlhens/nest-boilerplate.git
    
  2. Go into the project directory

    cd nest-boilerplate/
    
  3. Checkout working branch

    git checkout <branch>
    
  4. Install NPM dependencies

    npm i
    
  5. Copy .env.dist to .env

    cp .env.dist .env
    
  6. Replace the values of the variables with your own

  7. Create Docker images and launch them

    docker-compose up -d --build
    

What's in the box ?

CircleCI

CircleCI automates your software builds, tests, and deployments.

CircleCI pipeline file: .circleci/config.yml.

For more configuration options and details, see the configuration docs.


Commitizen

commitizen is a command line utility that makes it easier to create commit messages following the conventional commit format specification.

Use git cz instead of git commit to use commitizen.

Configuration file: .czrc.


Commitlint

commitlint checks if your commit messages meet the conventional commit format.

Configuration file: .commitlintrc.json.

In general the pattern mostly looks like this:

type(scope?): subject  #scope is optional

Are you a good commitizen ?


Docker Compose

Compose file: docker-compose.yml.

Containers :

  • PostgreSQL 14
  • pgAdmin 6

Compose file uses .env.


ESLint

ESLint is a fully pluggable tool for identifying and reporting on patterns in JavaScript.

Configuration file: .eslintrc.js.

For more configuration options and details, see the configuration docs.


GitHub Actions

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.

CI workflow file: .github/workflows/ci.yml.


Husky

Husky is a package that helps you create Git hooks easily.

Configuration folder: .husky.


Lint-staged

Lint-staged is a Node.js script that allows you to run arbitrary scripts against currently staged files.

Configuration file: .lintstagedrc.json.


Prettier

Prettier is an opinionated code formatter.

Configuration file: .prettierrc.json. Ignore file: .prettierignore.

For more configuration options and details, see the configuration docs.


Running the app

development

npm run start

watch mode

npm run start:dev

production mode

npm run start:prod

Code scaffolding

Run nest generate|g <schematic> <name> [options] to generate a new Nest Element.


Build

Run npm run build to build the project. The build artifacts will be stored in the dist/ directory.


Test

unit tests

npm run test

e2e tests

npm run test:e2e

test coverage

npm run test:cov

Further help

To get more help on the Nest CLI use nest --help or go check out the Nest CLI README.


Useful Docker commands

  1. If you want to check that all containers are up :

    docker-compose ps
    
  2. Other Docker commands :

    # Start Docker
    docker-compose start
    
    # Restart Docker
    docker-compose restart
    
    # Stop Docker
    docker-compose stop
    
    # Delete all containers
    docker rm $(docker ps -aq)
    
    # Delete all images
    docker rmi $(docker images -q)
    
  3. How to get a Docker container's IP address from the host ?

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>
    docker inspect $(docker ps -f name=<service> -q) | grep IPAddress
    

Badges
Extracted from project README
GitHub CI Commitizen friendly code style: prettier Conventional Commits
Related Projects