All Projects → ddd-by-examples → library-php

ddd-by-examples / library-php

Licence: MIT License
WIP: A comprehensive Domain-Driven Design example with problem space strategic analysis and various tactical patterns.

Programming Languages

PHP
23972 projects - #3 most used programming language
Gherkin
971 projects

Projects that are alternatives of or similar to library-php

node-cqrs-saga
Node-cqrs-saga is a node.js module that helps to implement the sagas in cqrs. It can be very useful as domain component if you work with (d)ddd, cqrs, eventdenormalizer, host, etc.
Stars: ✭ 59 (-19.18%)
Mutual labels:  events, cqrs, domain-driven-design
All Things Cqrs
Comprehensive guide to a couple of possible ways of synchronizing two states with Spring tools. Synchronization is shown by separating command and queries in a simple CQRS application.
Stars: ✭ 474 (+549.32%)
Mutual labels:  events, cqrs, domain-driven-design
Goes
Go Event Sourcing made easy
Stars: ✭ 144 (+97.26%)
Mutual labels:  events, cqrs, domain-driven-design
Event Sourcing Cqrs Examples
Event Sourcing and CQRS in practice.
Stars: ✭ 265 (+263.01%)
Mutual labels:  events, cqrs, domain-driven-design
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+2546.58%)
Mutual labels:  events, cqrs, domain-driven-design
domain
A dependency-free package to help building a business domain layer
Stars: ✭ 33 (-54.79%)
Mutual labels:  cqrs, domain-driven-design
financial
POC de uma aplicação de domínio financeiro.
Stars: ✭ 62 (-15.07%)
Mutual labels:  cqrs, domain-driven-design
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (-34.25%)
Mutual labels:  cqrs, domain-driven-design
educational-platform
Modular Monolith Java application with DDD
Stars: ✭ 124 (+69.86%)
Mutual labels:  cqrs, domain-driven-design
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+223.29%)
Mutual labels:  cqrs, domain-driven-design
MonolithicArchitecture
This repository presents an approach on how to build an application using Monolithic architecture, ASP.NET Core, EntityFrameworkCore, Identity Server, CQRS, DDD
Stars: ✭ 18 (-75.34%)
Mutual labels:  cqrs, domain-driven-design
microservice-template
📖 Nest.js based microservice repository template
Stars: ✭ 131 (+79.45%)
Mutual labels:  cqrs, domain-driven-design
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+143.84%)
Mutual labels:  cqrs, domain-driven-design
dudulina
CQRS + Event Sourcing library for PHP
Stars: ✭ 53 (-27.4%)
Mutual labels:  cqrs, domain-driven-design
eda
eda is a library for implementing event-driven architectures.
Stars: ✭ 31 (-57.53%)
Mutual labels:  cqrs, domain-driven-design
nest-convoy
[WIP] An opinionated framework for building distributed domain driven systems using microservices architecture
Stars: ✭ 20 (-72.6%)
Mutual labels:  cqrs, domain-driven-design
fake-survey-generator
A slightly more-than-trivial full-stack application built with DDD & CQRS concepts
Stars: ✭ 49 (-32.88%)
Mutual labels:  cqrs, domain-driven-design
Clean-Architecture-Template
Configurable Clean Architecture template containing the DDD + CQRS approach for .NET Core applications.
Stars: ✭ 14 (-80.82%)
Mutual labels:  cqrs, domain-driven-design
Plastic
This project provides encapsulation of things like Domain, Application Rules, Business Rules or Business Logic in Application.
Stars: ✭ 30 (-58.9%)
Mutual labels:  cqrs, domain-driven-design
eav-bundle
A Symfony bundle for basic EAV management
Stars: ✭ 19 (-73.97%)
Mutual labels:  cqrs, domain-driven-design

Library (PHP)

buddy pipeline Minimum PHP Version GitHub

The project is currently under development. Some solutions are temporary and may change. Which doesn't mean you can't learn from it 😉.

A comprehensive Domain-Driven Design example with problem space strategic analysis and various tactical patterns.

Reference: https://github.com/ddd-by-examples/library

About

This is a project of a library, driven by real business requirements. We use techniques strongly connected with Domain Driven Design, Behavior-Driven Development, Event Storming, User Story Mapping.

Domain description

A public library allows patrons to place books on hold at its various library branches. Available books can be placed on hold only by one patron at any given point in time. Books are either circulating or restricted, and can have retrieval or usage fees. A restricted book can only be held by a researcher patron. A regular patron is limited to five holds at any given moment, while a researcher patron is allowed an unlimited number of holds. An open-ended book hold is active until the patron checks out the book, at which time it is completed. A closed-ended book hold that is not completed within a fixed number of days after it was requested will expire. This check is done at the beginning of a day by taking a look at daily sheet with expiring holds. Only a researcher patron can request an open-ended hold duration. Any patron with more than two overdue checkouts at a library branch will get a rejection if trying a hold at that same library branch. A book can be checked out for up to 60 days. Check for overdue checkouts is done by taking a look at daily sheet with overdue checkouts. Patron interacts with his/her current holds, checkouts, etc. by taking a look at patron profile. Patron profile looks like a daily sheet, but the information there is limited to one patron and is not necessarily daily. Currently a patron can see current holds (not canceled nor expired) and current checkouts (including overdue). Also, he/she is able to hold a book and cancel a hold.

How actually a patron knows which books are there to lend? Library has its catalogue of books where books are added together with their specific instances. A specific book instance of a book can be added only if there is book with matching ISBN already in the catalogue. Book must have non-empty title and price. At the time of adding an instance we decide whether it will be Circulating or Restricted. This enables us to have book with same ISBN as circulated and restricted at the same time (for instance, there is a book signed by the author that we want to keep as Restricted)

References

  1. Introducing EventStorming by Alberto Brandolini
  2. Domain Modelling Made Functional by Scott Wlaschin
  3. Software Architecture for Developers by Simon Brown
  4. Clean Architecture by Robert C. Martin
  5. Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
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].