Team developed by Hexagonal Architecture and Clean Architecture mindset especially Dependency Injection and S.O.L.I.D
each project have two main part core and adapter.
core is the main part of our app and contains business rules , port, domain and dto. and port (dependencies model) at the
usecase is a business rules but this component need other part for working well like dao we model other part in port and inject implementation of port on usecase you can find at the app/internal/core/usecase
port is a model of our dependency you can find port on app/internal/core/port
dto or data transfer object is a standard for send and recive data from usecase
each adapter is implementation of one port that injected in usecase we impliment somthing like query in this part.
you can find database migration on app/assets
- Read configs from env vars
- In the second step we prepering our driven port like database. at the end of this step we have a implementation of driven port
- when we need local data in this step we have a database instance.
- when we need a data from other microservices we have sync or async commenication object like grpc or rabbitmq
- In the third step we call the usecase and pass objects of step 2 for use as dao in usecase
- In the last Pass usecase in the driver port implementation.