https://github.com/luizfelipem/service-template
NodeJS template that cover all the key aspects needed for the development of a end-to-end microservice: Frontend, Backend, Database, Messaging.
https://github.com/luizfelipem/service-template
event-driven microservice nodejs postgresql rabbitmq react ssr template-project
Last synced: 7 months ago
JSON representation
NodeJS template that cover all the key aspects needed for the development of a end-to-end microservice: Frontend, Backend, Database, Messaging.
- Host: GitHub
- URL: https://github.com/luizfelipem/service-template
- Owner: LuizFelipeM
- License: mit
- Created: 2024-11-25T14:42:29.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-05T13:05:16.000Z (over 1 year ago)
- Last Synced: 2024-12-05T14:18:43.921Z (over 1 year ago)
- Topics: event-driven, microservice, nodejs, postgresql, rabbitmq, react, ssr, template-project
- Language: TypeScript
- Homepage:
- Size: 185 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Service Template
This template cover all the key aspects needed for the development of a end-to-end microservice: Frontend, Backend, Database, Messaging.
## Architecture
The hexagonal architecture was choosen due to their flexibility. The idea of coding for adapters, decoupling the internal domain from the external world, makes the hexagonal architecture well suited for the flexibility required among different microservices.
Other good benefit of defining a unique architecture and other tools/technologies among all microservices using this template is setting a standard and facilitating the projects maintenance. If all projects use the same stack and architecture, is easier to understand and locate things inside different projects contributing to an easy maintainability.
Docker was also added to the project as the primary way of development so no need to set up external databases or message brokers.
## Technologies
The technologies also were choosen based on their flexibility, simplicity and previous knowledge. Also, worth mentioning, that this technologies are selected so they can be easily updated/replaced independently if necessary, this is the reason behind why I decided not to go with NestJS, everything would be thighted to it.
- Typescript + NodeJS
- Express - API
- TSyringe - DI Container
- TypeORM - Database ORM
- PostgreSQL - DBMS
- RabbitMQ - Message broker
## To Do
- Add RabbitMQ to docker-compose.yml