This is a NestJS boilerplate code with preconfigured libraries and packages with the following features:
- One-click setup with Docker
- Typeorm for Object–relational mapping, use Postgres DB by default
- Sample data generation with typeorm-fixture (generate fixture based on .yaml file), visit RobinCK/typeorm-fixtures.
- Preconfigured Caching Mechanism (Redis Store)
- Swagger UI (Express)
- Authentication with JWT
- Basic RBAC implementation ( You'll have to attach user object to your request manually )
- TFD Blog (Now TFD E-Learning) : https://github.com/tfd-ed/tfd-blog
- TFD E-Learning Admin: https://github.com/tfd-ed/tfd-elearning-admin
- TFD E-Learning API: https://github.com/tfd-ed/tfd-nest-blog-api
Be aware that putting DB_SYNC to true in your production may result in irreversible data lost.
DB_SYNC should only be put to true in development to skip the necessity of doing migrations.
- Create .env file with command
cp .env.example .env
and replace with your own env variable yarn install
yarn start
(Your API will be exposed through port 3000)
Run the following scripts for UNIX (Mac,Linux)
$ cp .env.example .env
$ docker-compose up -d
DOS(Windows)
$ copy .env.example .env
$ docker-compose up -d
Once you managed to run the docker container, the following service will be available:
- Nginx will serve as a reverse proxy and will be exposed through port 80 (http://localhost)
- Swagger API Docs (http://localhost/docs/)
- Database (Postgres 12) (http://localhost:5432)
- Redis Commander (http://localhost:8081)
- Redis Store (Only Available in internal docker network) (http://0.0.0.0:6379)
- NestJs Server (Only Available in internal docker network) (http://0.0.0.0:3000)
New migration with typeorm-cli:
$ docker exec -it tfd-api-server yarn migration:create -n {CreateTable}
Migration file will be inside src/migrations
.
Note that you will have to write migration code inside up and down method on your own.
To generate migration for new database or from the changes in database schema(entities) use:
$ docker exec -it tfd-api-server yarn migration:generate -n {GenerateTable}
$ docker exec -it tfd-api-server yarn migration:run
$ docker exec -it tfd-api-server yarn migration:revert
Fixture lets you play around with sample data. It's not recommended generating in production since it may erase real data. visit RobinCK/typeorm-fixtures for more info.
$ docker exec -it tfd-api-server yarn fixture:generate