ACK NestJs Boilerplate 🔥 🚀
This repo will representative of authentication service and authorization service
[ACK NestJs][ack] is a Http NestJs v10.x boilerplate. Best uses for backend service.
You can request feature or report bug with following this link
Table of contents
Important
Very limited documentation
- There have been some breaking changes between v5 and v6.
- The features will be relate with AWS / Amazon web service
- Stateless Authorization
- Must run MongoDB as a
replication set
for database transactions
.
- If you want to implement
Google SSO
. You must have google cloud console account, then create your own Credential to get the clientId
and clientSecret
.
- If you want to implement
Apple SSO
. You must have clientId
and signInClientId
.
- If you change the environment value of
APP_ENV
to production
, that will trigger.
- CorsMiddleware will implement config from
src/configs/middleware.config.ts
.
- Documentation will
disable
.
- Global prefix will remove. Before is
/api
.
- For monitoring, this project will use
sentry.io
, and only send 500
or internal server error
.
Todo
Prerequisites
We assume that everyone who comes here is programmer with intermediate knowledge
and we also need to understand more before we begin in order to reduce the knowledge gap.
- Understand NestJs Fundamental, Main Framework. NodeJs Framework with support fully TypeScript.
- Understand Typescript Fundamental, Programming Language. It will help us to write and read the code.
- Understand ExpressJs Fundamental, NodeJs Base Framework. It will help us in understanding how the NestJs Framework works.
- Understand what and how database works, especially NoSql and MongoDB.
- Understand Repository Design Pattern or Data Access Object Design Pattern. It will help to read, and write the source code
- Understand The SOLID Principle and KISS Principle for better write the code.
- Optional. Understand Microservice Architecture, Clean Architecture, and/or Hexagonal Architecture. It can help you to understand more deep about this project.
- Optional. Understanding The Twelve Factor Apps. It can help to serve the project.
- Optional. Understanding Docker.
Build with
Describes which version.
Name |
Version |
NestJs |
v10.x |
NestJs Swagger |
v7.x |
NodeJs |
v20.x |
Typescript |
v5.x |
Mongoose |
v10.x |
MongoDB |
v7.x |
Yarn |
v1.x |
NPM |
v10.x |
Docker |
v24.x |
Docker Compose |
v2.x |
Objective
- Easy to maintenance
- NestJs Habit
- Component based / modular folder structure
- Stateless authentication and authorization
- Repository Design Pattern or Data Access Layer Design Pattern
- Follow Community Guide Line
- Follow The Twelve-Factor App
- Adopt SOLID and KISS principle
- Support for Microservice Architecture, Serverless Architecture, Clean Architecture, and/or Hexagonal Architecture
Features
Main Features
- NestJs 10.x 🥳
- Typescript 🚀
- Production ready 🔥
- Repository Design Pattern (Multi Repository, can mix with other orm)
- Swagger / OpenAPI 3 included
- Authentication (
Access Token
, Refresh Token
, API Key
, Google SSO
, Apple SSO
)
- Authorization, Role Management.
- Support multi-language
i18n
🗣, can controllable with request header x-custom-lang
- Request validation for all request params, query, dan body with
class-validation
- Serialization with
class-transformer
- Url Versioning, default version is
1
- Server Side Pagination
- Import and export data with CSV or Excel by using
decorator
- Sentry.io for Monitoring Tools
Database
- MongoDB integrate by using mongoose 🎉
- Multi Database
- Database Transaction
- Database Soft Delete
- Database Migration
Security
- Apply
helmet
, cors
, and throttler
- Timeout awareness and can override ⌛️
Setting
- Support environment file
- Centralize configuration 🤖
- Centralize response structure
- Centralize exception filter
- Setting from database 🗿
Others
- Support Docker installation
- Support CI/CD (Eg: Github Action)
- Husky GitHook for run linter before commit 🐶
- Linter with EsLint for Typescript
Third Party Integration
- AWS S3
- AWS SES
- AWS EC2
- AWC ECS (ongoing)
- Sentry.io
- Google SSO
- Apple SSO
Installation
Installation will describe in difference doc. here.
Swagger
You can check The Swagger after running this project. Url localhost:3000/docs
and don't for get to put x-api-key
on header.
License
Distributed under MIT licensed.
Contribute
How to contribute in this repo
- Fork the repository
- Create your branch (git checkout -b my-branch)
- Commit any changes to your branch
- Push your changes to your remote branch
- Open a pull request
If your code behind commit with the original / main / master branch, please update your code and resolve the conflict.
Andre Christi kan