All Projects → jorge07 → Ddd Playground

jorge07 / Ddd Playground

Domain-Driven Design in a PHP project using Symfony

Projects that are alternatives of or similar to Ddd Playground

Bicing Api
Get statistics and locations of bicycle stations through REST API
Stars: ✭ 149 (-71.18%)
Mutual labels:  symfony, ddd
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+1101.16%)
Mutual labels:  rest-api, ddd
Symfony Ddd Wishlist
Wishlist, a sample application on Symfony 3 and Vue.js built with DDD in mind
Stars: ✭ 172 (-66.73%)
Mutual labels:  symfony, ddd
Service Bus Symfony Bundle
Symfony Bundle - PHP Lightweight Message Bus supporting CQRS
Stars: ✭ 90 (-82.59%)
Mutual labels:  symfony, ddd
Angular Symfony
Project Bootstrap for an Angular + Symfony project
Stars: ✭ 196 (-62.09%)
Mutual labels:  rest-api, symfony
Event Store Symfony Bundle
Event Store Symfony Bundle
Stars: ✭ 93 (-82.01%)
Mutual labels:  symfony, ddd
Nestjs Cqrs Starter
Nestjs-cqrs API
Stars: ✭ 25 (-95.16%)
Mutual labels:  rest-api, ddd
Kreta
Modern project management solution
Stars: ✭ 177 (-65.76%)
Mutual labels:  symfony, ddd
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+268.09%)
Mutual labels:  rest-api, ddd
Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+146.23%)
Mutual labels:  rest-api, ddd
Symfony Ddd Edition
Symfony standard edition with DDD architecture.
Stars: ✭ 78 (-84.91%)
Mutual labels:  symfony, ddd
Fosrestbundle
This Bundle provides various tools to rapidly develop RESTful API's with Symfony
Stars: ✭ 2,683 (+418.96%)
Mutual labels:  rest-api, symfony
Ddd Symfony Sample
A symfony sample application using DDD
Stars: ✭ 58 (-88.78%)
Mutual labels:  symfony, ddd
Php Ddd Example
🐘🎯 Hexagonal Architecture + DDD + CQRS in PHP using Symfony 5
Stars: ✭ 1,960 (+279.11%)
Mutual labels:  symfony, ddd
Symfony 5 Es Cqrs Boilerplate
Symfony 5 DDD ES CQRS backend boilerplate
Stars: ✭ 759 (+46.81%)
Mutual labels:  symfony, ddd
Bankflix
Aplicação que simula um banco digital, contendo a área do cliente e administrativa, permitindo depósitos e transferências entre contas do mesmo banco. | Application that simulates a digital bank, containing the customer and administrative areas, allowing deposits and transfers between accounts of the same bank.
Stars: ✭ 82 (-84.14%)
Mutual labels:  rest-api, ddd
Symfony Flex Backend
Symfony Flex REST API template project
Stars: ✭ 214 (-58.61%)
Mutual labels:  rest-api, symfony
Open Loyalty
Open Loyalty is technology for loyalty solutions for starting new loyalty projects.
Stars: ✭ 476 (-7.93%)
Mutual labels:  symfony, ddd
Wellcommerce
Open-source E-Commerce software
Stars: ✭ 499 (-3.48%)
Mutual labels:  symfony
Payumbundle
Payum offers everything you need to work with payments. From simplest use cases to very advanced ones.
Stars: ✭ 509 (-1.55%)
Mutual labels:  symfony

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

  • [x] User authentication based in JWT
  • [x] UUID as binary to improve the performance and create a nightmare for the dba.
  • [x] Automated tasks with ant.
  • [x] Dev and CI environments in Docker. Boosting build speed with docker cache layers in pipeline. Orchestrating with Docker Compose.
  • [x] An example of table inheritance and discriminator strategy
  • [x] How to deal with EAV (Entity-Attribute-Value) with Json data type.
  • [x] Code structured in layers as appears in DDD in php book.
  • [x] Test for api in behat accessing via web server (Acceptance tests).
  • [x] Integration test with Lakion api test case and Alice for fixtures and how to integrate it with behat.
  • [x] Command Bus implementation
  • [x] DomainEvents
  • [x] Events to RabbitMQ
  • [x] 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: unit or functional.

The aceptation tests are inside the test UI layer and attack the application from outside using Guzzle.

The Environment setup

The environment is in PHP7.1 and the development containers are on etc/infrastructure/dev/docker-compose.yml

Up environment with: docker-compose -f etc/infrastructure/dev/docker-compose.yml up -d

Install dependencies: docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'composer install'

Setup database, etc with : docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'ant build'

Start async listeners: docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'bin/console rabbitmq:multiple-consumer events'

  • Rabbit Management: :15672 Rabbit

  • Kibana: :5601 Kibana

CI/CD

Follow the Jenkinsfile or the gitlab-ci.yml file, it's clear enough and contains a simply workflow to:

  • build the isolated environment
  • docker-compose -p to avoid parallel jobs conflicts
  • provision the environment
  • run the test
  • extract reports
  • Build and store the artifacts (Docker images)
  • Clean the environment
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].