For a more acurated DDD, CQRS and Event Sourcing implementation see here
Wallet 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 ant.
- Dev and CI environments in Docker. Boosting build speed with docker cache layers in pipeline. Orchestrating with Docker Compose.
- An example of table inheritance and discriminator strategy
- How to deal with EAV (Entity-Attribute-Value) with Json data type.
- Code structured in layers as appears in DDD in php book.
- Test for api in behat accessing via web server (Acceptance tests).
- Integration test with Lakion api test case and Alice for fixtures and how to integrate it with behat.
- Command Bus implementation
- DomainEvents
- Events to RabbitMQ
- Events stored in ElasticSearch and Kibana for reading in
:5601
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.`
The tests follow the same structure and the phpunit tests are tagged with group tags: