This is a NestJS v9.x api to emulate a notification system, manipulating the notifications data through defined endpoints. No real notifications are dispatched, the application is just for controlling the notifications history.
The project was created for refinement of NestJS knowledge. It also work as a skills showcase.
Name | Version |
---|---|
NestJs | v9.x |
NodeJs | v19.8.x + |
Typescript | v4.7.x + |
NPM | v9.5.x + |
Prisma | v4.15.x + |
Docker | v20.10.x |
Docker Compose | v3.8.x |
Redis | v6.2.x |
Mysql | v8.0.x |
Postgresql | v12.x |
MongoDB | v3.2.x |
- Use a Dockerized environment
- Use concepts of Repository Pattern
- Use concepts of SOLID
- Use concepts of Clean Architecture
- Use Prisma for database modelling and migration
- Use Data Transfer Objects (DTOs) to transport groups of data between the application layers and to validate input data
- Create tests for the application using JEST
- Getting Started
- Folder Structure
- Api Versioning
- About Prisma Schema
- CORS
- Available NPM Scripts
- Available Make Scripts
Next development actions
- Adjust dependencies import (tsconfig paths not working properly in jest tests)
- Implement mappers (from Prisma to Entity, from Entity to Prisma)
- Implement view models on the http layer
- Implement create notification flow (controller, use-case, etc)
- Implement cancel notification flow (controller, use-case, etc)
- Implement read notification flow (controller, use-case, etc)
- Implement unread notification flow (controller, use-case, etc)
- Implement recipient received notifications count flow (controller, use-case, etc)
- Implement recipient received notifications list flow (controller, use-case, etc)
- Implement list all notifications flow (controller, use-case, etc)
- Implement get specific notification flow (controller, use-case, etc)
- Adding api name and api version to the endpoints
- Create and apply configurations files (Application, Api, Database, Redis)
- Saving counter of sent notifications on Redis
- Saving counter of read notifications on Redis
- Adjust jest tests for better performance
- Implement health check route
- Finish documentation