https://github.com/alexalvess/eventual-ppe-managment
A distributed system using Reactive DDD as uncertainty modeling, Event Storming as subdomain decomposition, Event Sourcing as an eventual persistence mechanism, CQS, Microservices for individual deployable units, Event-driven Architecture for efficient integration, and Ports-Adapters Architecture as domain-centric design
https://github.com/alexalvess/eventual-ppe-managment
architecture cqs ddd dotnet event-driven event-sourcing graphql hexagonal-architecture microservices reactive reactive-programming
Last synced: 3 months ago
JSON representation
A distributed system using Reactive DDD as uncertainty modeling, Event Storming as subdomain decomposition, Event Sourcing as an eventual persistence mechanism, CQS, Microservices for individual deployable units, Event-driven Architecture for efficient integration, and Ports-Adapters Architecture as domain-centric design
- Host: GitHub
- URL: https://github.com/alexalvess/eventual-ppe-managment
- Owner: alexalvess
- License: mit
- Created: 2023-03-21T22:11:00.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-13T16:20:00.000Z (about 1 year ago)
- Last Synced: 2024-12-31T10:29:01.782Z (5 months ago)
- Topics: architecture, cqs, ddd, dotnet, event-driven, event-sourcing, graphql, hexagonal-architecture, microservices, reactive, reactive-programming
- Language: TypeScript
- Homepage:
- Size: 502 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eventual PPE Managment
## 💡 About
### Business Proposal
This project is a simple PPE Management. The principle idea is to register workers and PPE and, with this data, allow to transfer PPE to a worker.
Besides that, this system allows that you see all the PPE and who has a PPE and notify if the PPE is near to expire.##### Abbreviations:
* NIN: National Insurance Number (as CPF in Brazil)
* PPE: Personal Protective Equipment
* DDD: Domain Driven Design### Technical Proposal
The main objective of this project is to represent a distributed, reliable, and highly scalable architecture, using the relevant principles of [Reactive Domain Driven Design](https://www.infoq.com/articles/modeling-uncertainty-reactive-ddd/)
#### Concepts
* Actor Models
* CQS (Command-Query Separation)
* EventSourcing#### Solution Architecture

#### EventStore modeling

---
### Running
Dcoker
The respective [.docker-compose.development.yaml](./docker-compose.development.yaml) will provide all necessary resources, with public exposure to the connection ports:
```bash
docker compose -f ./docker-compose-development.yaml up -d
```---
## References
* https://oieduardorabelo.medium.com/node-js-e-typescript-o-como-e-com-testes-7affce2c02a8
* https://scoutapm.com/blog/nodejs-architecture-and-12-best-practices-for-nodejs-development
* https://blog.logrocket.com/design-patterns-in-node-js/
* https://www.section.io/engineering-education/how-to-create-a-simple-rest-api-using-typescript-and-nodejs/
* https://medium.com/xp-inc/rabbitmq-criando-workers-com-node-js-268b40da7789
* https://khalilstemmler.com/articles/tutorials/dependency-injection-inversion-explained/
* https://www.mongodb.com/docs/drivers/node/current/quick-start/connect-to-mongodb/
* https://gist.github.com/dsherret/cf5d6bec3d0f791cef00
* https://medium.com/swlh/using-typescript-with-mongodb-393caf7adfef
* https://www.cloudamqp.com/blog/how-to-run-rabbitmq-with-nodejs.html
* https://github.com/onebeyond/rascal
* https://levelup.gitconnected.com/how-to-add-swagger-ui-to-existing-node-js-and-express-js-project-2c8bad9364ce