apip-ddd
apip-ddd copied to clipboard
An example of hexagonal API Platform 3 implementation
Hexagonal API Platform 3
An example project using API Platform 3 following the hexagonal architecture.
This example has been explained during the SymfonyLive Paris 2022 (slides).
Getting started
If you wan't to try to use and tweak that example, you can follow these steps:
- Run
git clone https://github.com/mtarld/apip-dddto clone the project - Run
docker-compose build --pull --no-cacheto build fresh images - Run
docker-compose upto up your containers - Visit https://localhost and play with your app!
:warning: Temporary dependencies
As API platform 3 isn't released yet, that repository is using the dev-main
branch of api-platform/core.
As soon as API Platform is released (it should happen very soon), the v3 tag must be targetterd and the minimum-stability must be updated.
What's inside?
Following links aim to explain the architecture of the project and the purpose of each classes.
- Layers (TODO)
- Domain layer
- Models and repositories (TODO)
- Application layer
- The command/query pattern (TODO)
- Infrastructure layer
- API Resource (TODO)
- Custom operation metadata (TODO)
- Query providers
- Command processors (WIP)
- CRUD providers/processors (TODO)
- Command data transformers (TODO)
- Openapi filters (TODO)
- Native providers/processors removal compiler pass
- Messenger buses (TODO)
Contributing
That implementation is pragmatic and far for being uncriticable. It's mainly an conceptual approach to extend API Platform in order to defer operations to command and query buses.
It could and should be improved, therefore feel free to submit issues and pull requests if something isn't relevant to your use cases or isn't clean enough.
Authors
Mathias Arlaud with the help of Robin Chalas