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 setfordatabase transactions. - If you want to implement
Google SSO. You must have google cloud console account, then create your own Credential to get theclientIdandclientSecret. - If you want to implement
Apple SSO. You must haveclientIdandsignInClientId. - If you change the environment value of
APP_ENVtoproduction, 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 send500orinternal 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.