An open API service indexing awesome lists of open source software.

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

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

![Solution Architecture](./.assets/imgs/solution-architecture.png)

#### EventStore modeling

![Event Store](./.assets/imgs/eventstore.png)

---

### 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