{"id":18000802,"url":"https://github.com/josecelano/ddd-symfony-sample","last_synced_at":"2026-03-10T06:31:16.024Z","repository":{"id":25906486,"uuid":"29347211","full_name":"josecelano/ddd-symfony-sample","owner":"josecelano","description":"A symfony sample application using DDD","archived":false,"fork":false,"pushed_at":"2015-01-23T12:15:40.000Z","size":272,"stargazers_count":59,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-10-11T13:48:33.985Z","etag":null,"topics":["ddd","php","sample","symfony"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josecelano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-16T12:16:45.000Z","updated_at":"2025-07-27T14:40:43.000Z","dependencies_parsed_at":"2022-08-24T14:16:41.887Z","dependency_job_id":null,"html_url":"https://github.com/josecelano/ddd-symfony-sample","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/josecelano/ddd-symfony-sample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fddd-symfony-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fddd-symfony-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fddd-symfony-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fddd-symfony-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josecelano","download_url":"https://codeload.github.com/josecelano/ddd-symfony-sample/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fddd-symfony-sample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30326891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ddd","php","sample","symfony"],"created_at":"2024-10-29T23:14:10.245Z","updated_at":"2026-03-10T06:31:15.954Z","avatar_url":"https://github.com/josecelano.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DDD symfony sample application\n\nBy [Jose Celano](http://josecelano.com/)\n\nA symfony sample application using DDD.\n\nThe purpose: testing some DDD concepts using Symfony.\n\n## Domain\n\n- User can register\n\n## Installation\n\nSymfony standard installation.\n\n## What I want to test?\n\n### Command and Event Bus by [Matthias Noback](http://php-and-symfony.matthiasnoback.nl/)\n\n- Store events (DDD-CQRS)\n- Handle events asynchronously (for better performance)\n- Log events (for debugging)\n- Use message queue (ActiveMQ and RabbitMQ) to send messages between different application modules\n\n### Security layer [Michiel Uithol](http://www.utwente.nl/ewi/trese/graduation_projects/2008/Uithol.pdf)\n\n- Authorization, where: command, app service?\n\n### Repositories\n\n- Agnostic base repository (implementations with Doctrine, MongoDB, ...)\n- Is possible to use doctrine with annotations and keep domain decoupled? I have seen some people store view instead of domain entity.\n\n### Validation\n\n- Where to put validation: command, domain service, repository?\n\n## Usage\n\nOn order to test Matthias Noback message bus sample using asynchronous events bus must run this Symfony command to pull events from the message queue:\n\n´´´´\nphp app/console matthias:user:asyn-event-subscriber\n´´´´\n\nStomp message queue parameter are defined in ´´´´parameters.yml´´´´\n\n´´´´\n    # stomp message queue\n    stomp_host: 127.0.0.1\n    stomp_port: 61613\n    stomp_default_queue: /queue/foo\n    stomp_user: admin\n    stomp_password: adminPassword\n´´´´    \n\n## References\n\n### Other DDD Symfony sample applications\n\n- [https://github.com/tyx/ddd-sample-symfony](https://github.com/tyx/ddd-sample-symfony)\n- [https://github.com/leopro/trip-planner](https://github.com/leopro/trip-planner)\n- [https://github.com/tyx/cqrs-php-sandbox](https://github.com/tyx/cqrs-php-sandbox)\n- [https://github.com/SimpleBus](https://github.com/SimpleBus)\n\n### The best blogs I have found about DDD+Symfony\n\n- [http://nobacksoffice.nl](http://nobacksoffice.nl)\n- [http://verraes.net](http://verraes.net)\n- [http://williamdurand.fr](http://williamdurand.fr)\n\n### Posts that has inspired me.\n\n- [http://www.whitewashing.de/2013/09/04/decoupling_from_symfony_security_and_fosuserbundle.html](http://www.whitewashing.de/2013/09/04/decoupling_from_symfony_security_and_fosuserbundle.html)\n- [http://www.whitewashing.de/2012/08/22/building_an_object_model__no_setters_allowed.html](http://www.whitewashing.de/2012/08/22/building_an_object_model__no_setters_allowed.html)\n\n- [http://verraes.net/2014/11/domain-events](http://verraes.net/2014/11/domain-events)\n- [http://verraes.net/2013/04/decoupling-symfony2-forms-from-entities](http://verraes.net/2013/04/decoupling-symfony2-forms-from-entities)\n\n- [http://williamdurand.fr/2013/12/16/enforcing-data-encapsulation-with-symfony-forms](http://williamdurand.fr/2013/12/16/enforcing-data-encapsulation-with-symfony-forms)\n\n- [http://php-and-symfony.matthiasnoback.nl/2015/01/a-wave-of-command-buses](http://php-and-symfony.matthiasnoback.nl/2015/01/a-wave-of-command-buses)\n- [http://php-and-symfony.matthiasnoback.nl/2015/01/responsibilities-of-the-command-bus](http://php-and-symfony.matthiasnoback.nl/2015/01/responsibilities-of-the-command-bus)\n- [http://php-and-symfony.matthiasnoback.nl/2015/01/from-commands-to-events](http://php-and-symfony.matthiasnoback.nl/2015/01/from-commands-to-events)\n- [http://php-and-symfony.matthiasnoback.nl/2015/01/collecting-events-and-the-events-aware-command-bus](http://php-and-symfony.matthiasnoback.nl/2015/01/collecting-events-and-the-events-aware-command-bus)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecelano%2Fddd-symfony-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosecelano%2Fddd-symfony-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecelano%2Fddd-symfony-sample/lists"}