Warehouse API in Symfony following DDD (Domain Driver Design).
- User authentication based in JWT
- UUID as binary to improve the performance and create a nightmare for the dba.
- Automated tasks with makefile
- Dev environment in Docker. Boosting build speed with docker cache layers in pipeline. Orchestrating with Docker Compose.
- An example of table inheritance and discriminator strategy
- Code structured in layers as appears in DDD in php book.
- Command Bus implementation
- DomainEvents
- Events to RabbitMQ
- Async Event subscribers
- Swagger API Doc
src
\
|\ Application `Contains the Use Cases of the domain system and the Data Transfer Objects`
|
|\ Domain `The system business logic layer`
|
|\ Infrastructure `Its the implementation of the system outside the model. I.E: Persistence, serialization, etc`
|
\ UI `User Interface. This use to be inside the Infrastructure layer, but I don't like it.`
- PHP 7.2
- Mysql 5.7
- RabbitMQ 3
Up environment:
make start
Static code analysis:
make style
Code style fixer:
make cs
Code style checker:
make cs-check
Enter in php container:
make s=php sh
Disable\Enable Xdebug:
make xoff
make xon
Heavily inspired from
