Skip to content

jorge07/ddd-playground

Repository files navigation

DDD Playground

For a more acurated DDD, CQRS and Event Sourcing implementation see here

Wallet API in Symfony following DDD (Domain Driver Design).

Examples in the repo

  • 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  

The folder structure

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

The tests follow the same structure and the phpunit tests are tagged with group tags: