A Symfony-based PHP wallet API implementing Domain-Driven Design with examples for authentication, testing, and event-driven architecture.
DDD Playground is a Symfony-based PHP project that implements a wallet API following Domain-Driven Design principles. It provides a practical example of structuring applications with DDD layers, integrating event-driven architecture, and implementing advanced testing strategies. The project solves the problem of understanding how to apply DDD, CQRS, and event sourcing in real PHP applications.
PHP developers and software architects looking to learn or implement Domain-Driven Design, CQRS, and event-driven patterns in Symfony projects. It's also valuable for teams adopting modern DevOps practices with Docker and CI/CD pipelines.
Developers choose DDD Playground because it offers a complete, working example of DDD in PHP with detailed implementations of complex patterns like event sourcing, command buses, and layered architecture. Its comprehensive testing suite and Dockerized environments make it an excellent reference for building maintainable, scalable applications.
Domain-Driven Design in a PHP project using Symfony
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The code is meticulously organized into Domain, Application, Infrastructure, and UI layers, providing a practical reference for DDD patterns as outlined in the README's folder structure.
Includes unit, functional, and acceptance tests using PHPUnit, Behat, and Lakion API test cases with Alice fixtures, ensuring robust code quality and integration testing from the UI layer.
Dockerized environments with optimized cache layers for development and CI, along with Jenkins and GitLab CI examples, streamline setup and automate testing and deployment workflows.
Implements DomainEvents with RabbitMQ for messaging and ElasticSearch for storage, offering a hands-on example of event-driven architecture accessible via Kibana for analysis.
Requires multiple Docker Compose commands and manual steps like starting async listeners, which can be cumbersome and time-consuming for quick experimentation or beginners.
Advanced patterns like EAV with JSON data types and table inheritance are included, which might introduce unnecessary complexity for applications without such specific domain requirements.
Advertised as a 'playground' and references a more curated boilerplate, suggesting it may lack production-ready optimizations like error handling, scaling, or security best practices.