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
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
fordatabase transactions
. - If you want to implement
Google SSO
. You must have google cloud console account, then create your own Credential to get theclientId
andclientSecret
. - If you want to implement
Apple SSO
. You must haveclientId
andsignInClientId
. - If you change the environment value of
APP_ENV
toproduction
, that will trigger.- CorsMiddleware will implement config from
src/configs/middleware.config.ts
. - Documentation will
disable
. - Global prefix will remove. Before is
/api
.
- CorsMiddleware will implement config from
- For monitoring, this project will use
sentry.io
, and only send500
orinternal server error
.
- Refactor to version 6, more straightforward
- Add message remaining
- Refactor unit test
- Update Documentation, add behaviors
- Update Documentation, and include an diagram for easier comprehension
- Add Redis
- Move to stateful Authorization Token (security and ux reason)
- Implement GraphQL, just an options for running ?
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.
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 |
- 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
- 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 headerx-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
- MongoDB integrate by using mongoose 🎉
- Multi Database
- Database Transaction
- Database Soft Delete
- Database Migration
- Apply
helmet
,cors
, andthrottler
- Timeout awareness and can override ⌛️
- Support environment file
- Centralize configuration 🤖
- Centralize response structure
- Centralize exception filter
- Setting from database 🗿
- Support Docker installation
- Support CI/CD (Eg: Github Action)
- Husky GitHook for run linter before commit 🐶
- Linter with EsLint for Typescript
- AWS S3
- AWS SES
- AWS EC2
- AWC ECS (ongoing)
- Sentry.io
- Google SSO
- Apple SSO
Installation will describe in difference doc. here.
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.
Distributed under MIT licensed.
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.