Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smarlhens/nest-boilerplate
Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, TypeORM
https://github.com/smarlhens/nest-boilerplate
circleci commitizen commitlint docker docker-compose eslint github-actions husky lint-staged nest nestjs openapi postgresql prettier typeorm
Last synced: 16 days ago
JSON representation
Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, TypeORM
- Host: GitHub
- URL: https://github.com/smarlhens/nest-boilerplate
- Owner: smarlhens
- Created: 2020-04-04T20:40:52.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T06:55:27.000Z (6 months ago)
- Last Synced: 2024-05-28T08:21:17.765Z (6 months ago)
- Topics: circleci, commitizen, commitlint, docker, docker-compose, eslint, github-actions, husky, lint-staged, nest, nestjs, openapi, postgresql, prettier, typeorm
- Language: TypeScript
- Homepage:
- Size: 3.97 MB
- Stars: 95
- Watchers: 4
- Forks: 20
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Nest - Boilerplate
[![GitHub CI](https://github.com/smarlhens/nest-boilerplate/workflows/CI/badge.svg)](https://github.com/smarlhens/nest-boilerplate/actions?query=workflow%3ACI)
[![CircleCI](https://circleci.com/gh/smarlhens/nest-boilerplate.svg?style=svg)](https://circleci.com/gh/smarlhens/nest-boilerplate)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)## Table of contents
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [What's in the box ?](#whats-in-the-box-)
- [CircleCI](#circleci)
- [Commitizen](#commitizen)
- [Commitlint](#commitlint)
- [Docker Compose](#docker-compose)
- [ESLint](#eslint)
- [GitHub Actions](#github-actions)
- [Husky](#husky)
- [Lint-staged](#lint-staged)
- [Prettier](#prettier)
- [Running the app](#running-the-app)
- [Code scaffolding](#code-scaffolding)
- [Build](#build)
- [Test](#test)
- [Further help](#further-help)
- [Useful Docker commands](#useful-docker-commands)---
## 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 :
- [Git](https://git-scm.com/)
- [Node.js](https://nodejs.org/)
- [Docker](https://docs.docker.com/get-docker/)---
### Installation
1. Clone the git repository
```bash
git clone https://github.com/smarlhens/nest-boilerplate.git
```1. Go into the project directory
```bash
cd nest-boilerplate/
```1. Checkout working branch
```bash
git checkout
```1. Install NPM dependencies
```bash
npm i
```1. Copy `.env.dist` to `.env`
```bash
cp .env.dist .env
```1. Replace the values of the variables with your own
1. Create Docker images and launch them
```bash
docker-compose up -d --build
```---
## What's in the box ?
### CircleCI
[CircleCI](https://circleci.com/) automates your software builds, tests, and deployments.
**CircleCI pipeline file**: [`.circleci/config.yml`](./.circleci/config.yml).
For more configuration options and details, see the [configuration docs](https://circleci.com/docs/).
---
### Commitizen
[commitizen](https://github.com/commitizen/cz-cli) is a command line utility that makes it easier to create commit messages following the [conventional commit format](https://conventionalcommits.org) specification.
Use `git cz` instead of `git commit` to use commitizen.
[![Add and commit with Commitizen](https://github.com/commitizen/cz-cli/raw/master/meta/screenshots/add-commit.png)](https://github.com/commitizen/cz-cli/raw/master/meta/screenshots/add-commit.png)
**Configuration file**: [`.czrc`](./.czrc).
---
### Commitlint
[commitlint](https://github.com/conventional-changelog/commitlint) checks if your commit messages meet the [conventional commit format](https://conventionalcommits.org).
**Configuration file**: [`.commitlintrc.json`](./.commitlintrc.json).
In general the pattern mostly looks like this:
```sh
type(scope?): subject #scope is optional
```Are you a good `commitizen` ?
---
### Docker Compose
**Compose file**: [`docker-compose.yml`](./docker-compose.yml).
Containers :
- PostgreSQL 14
- pgAdmin 6Compose file uses `.env`.
---
### ESLint
[ESLint](https://eslint.org/) is a fully pluggable tool for identifying and reporting on patterns in JavaScript.
**Configuration file**: [`.eslintrc.js`](./.eslintrc.js).
For more configuration options and details, see the [configuration docs](https://eslint.org/docs/user-guide/configuring).
---
### GitHub Actions
[GitHub Actions](https://github.com/features/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`](./.github/workflows/ci.yml).
---
### Husky
[Husky](https://github.com/typicode/husky) is a package that helps you create Git hooks easily.
**Configuration folder**: [`.husky`](./.husky/).
---
### Lint-staged
[Lint-staged](https://github.com/okonet/lint-staged) is a Node.js script that allows you to run arbitrary scripts against currently staged files.
**Configuration file**: [`.lintstagedrc.json`](./.lintstagedrc.json).
---
### Prettier
[Prettier](https://prettier.io/) is an opinionated code formatter.
**Configuration file**: [`.prettierrc.json`](./.prettierrc.json).
**Ignore file**: [`.prettierignore`](./.prettierignore).For more configuration options and details, see the [configuration docs](https://prettier.io/docs/en/configuration.html).
---
## Running the app
### development
```bash
npm run start
```### watch mode
```bash
npm run start:dev
```### production mode
```bash
npm run start:prod
```---
## Code scaffolding
Run `nest generate|g [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
```bash
npm run test
```### e2e tests
```bash
npm run test:e2e
```### test coverage
```bash
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](https://github.com/nestjs/nest-cli/blob/master/README.md).
---
## Useful Docker commands
1. If you want to check that all containers are up :
```bash
docker-compose ps
```1. Other Docker commands :
```bash
# 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)
```1. How to get a Docker container's IP address from the host ?
```bash
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
docker inspect $(docker ps -f name= -q) | grep IPAddress
```---