yourwebmaker/cqrs.nu-php
50.9
Adequate · 21 September 2026
1.5k
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a web-based application for managing cafe operations, specifically focusing on the lifecycle of customer tabs and kitchen workflows. It allows waitstaff to open and close tabs, place and track food and drink orders, and enables kitchen staff to update the status of items as they are prepared and served. The architecture employs event sourcing to persist tab states and uses read models to synchronize real-time data for both the web interface and internal services.
Features
Add web templates for tab management and kitchen workflows
Introduces a new base layout and specific templates for the web interface, enabling users to open and close tabs, place and track orders, and manage kitchen and waitstaff tasks. The new templates include a base layout with navigation, a home page showing open tables, forms for opening and closing tabs, an order placement interface, a status view for tracking item preparation and serving, and todo lists for chefs and waitstaff.
src/UserInterface/Web/Templates · high confidence
Added domain events and exceptions for the Tab aggregate
Introduced new domain events for the Tab aggregate, including TabOpened, TabClosed, FoodOrdered, FoodPrepared, FoodServed, DrinksOrdered, and DrinksServed, each implementing the SerializablePayload interface for serialization. Additionally, specific domain exceptions (e.g., TabNotOpen, FoodNotPrepared) were added to handle invalid state transitions within the Tab domain.
src/Domain/Tab/Events · high confidence
Added read models and queries for open tabs and chef todo lists
New read-model classes and query interfaces have been introduced to support displaying tab invoices, tab status (to serve, in preparation, served), and a chef's todo list. This enables the application to query and present current tab states and item statuses from the database, facilitating features like invoice generation and kitchen order tracking.
src/Application/Read · high confidence
Initial Symfony framework configuration and service wiring
The application is now configured to run on the Symfony framework, with the introduction of core bundles (FrameworkBundle, TwigBundle) and a preload script for production performance. Service definitions have been established to enable autowiring for the application's domain and controller classes, while explicitly wiring third-party dependencies like Doctrine DBAL and Tactician command bus via factories.
config · high confidence
Initial Symfony framework integration and public assets
The application now uses the Symfony framework as its core, introducing a new public entry point (index.php) that bootstraps the environment, configures trusted proxies/hosts, and handles HTTP requests through a Kernel. Additionally, a new stylesheet (style.css) is provided to support the frontend UI, including styles for the main container and open table display.
public · high confidence
Initial project scaffolding and environment configuration
The application is now fully configured for local and containerized development. Environment variables are managed via .env and .env.test files, including the database connection string. A Docker Compose setup is provided to run the PHP 8.2 application and a MySQL 5.7 database, with ports 8001 and 3307 exposed. A Makefile automates common tasks such as starting containers, installing dependencies, running tests, and checking code style. The project also includes a MIT license, a .gitignore file, and a README with installation and usage instructions.
(repo-wide) · high confidence
Introduce command handlers for tab lifecycle and order management
The application now exposes a set of new commands to manage a customer's tab and orders. Users can open a tab, place orders, and track the status of food and drinks through dedicated command handlers. The implementation uses string identifiers for the tab rather than a value object, and the handler coordinates repository persistence for open, order, serve, and close operations.
src/Application/Write · high confidence
Introduce domain model for managing tab orders and lifecycle
Users can now open a tab, place orders for drinks and food, and track the status of each item (outstanding, prepared, or served) through a new domain model. The system enforces business rules such as preventing order placement on closed tabs, ensuring all items are served before closing, and validating payment amounts. This change implements the core tab management logic using EventSauce for state persistence.
src/Domain/Tab · high confidence
Introduce web controllers and static data for the cafe application
Added new controllers (Chef, Home, Tab, WaitStaff) that handle web requests for opening, ordering, marking items as served/prepared, and closing tabs. The TabController manages the full lifecycle of a tab (open, order, status, mark served, close), while the ChefController allows marking food as prepared. Static data for the menu and waitstaff is now provided via the StaticData class, and English/Portuguese translations are added for the UI.
src/UserInterface/Web/Controller · high confidence
New read models for chef's todo list and open tab status
The application now maintains denormalized read models for the chef's todo list and open tab status, enabling the UI to display pending food orders and the current state of each table (to-serve, in-preparation, or served). These new files implement the corresponding query and projector classes, allowing the system to track and display real-time kitchen and table information.
src/Infra/Read · high confidence
New service factories for Doctrine, Tactician, and EventSourcing
The application now introduces dedicated factory classes to instantiate core infrastructure components. A DoctrineFactory creates database connections, a TacticianFactory builds a command bus with a specific TabHandler, and a TabRepositoryFactory assembles an EventSourcing-based repository backed by Doctrine and dispatching to projectors. These changes shift how the application wires up its persistence and command handling mechanisms.
src/Infra/ServiceFactory · high confidence
Behavioural changes
Added Symfony-based console entry point
A new bin/console script has been added to bootstrap the application using Symfony's Console and Framework bundles. This change introduces a dependency on Symfony components (framework-bundle, dotenv, console) and shifts the application's CLI entry point to use the Symfony kernel and application structure, enabling standard Symfony console commands and environment variable management.
bin · high confidence
Implement EventSauce-based Tab persistence
The application now uses EventSauce to persist Tab aggregates. A new \TabRepositoryEventSauce\ class implements the \TabRepository\ interface, delegating save and retrieve operations to the underlying \AggregateRootRepository\. This change replaces previous persistence mechanisms with an event-sourcing approach for tab data.
src/Infra · high confidence
Initial database schema and migration configuration
Adds the first database migration to create the default table schema, including tables for aggregate events, read models, and chef to-do items, alongside configuration files for the database connection and migration execution.
migrations · high confidence
Introduced Symfony Kernel for application bootstrapping
The application now utilizes Symfony's Kernel class to manage the bootstrapping process, importing configuration and routing from the 'config' directory. This change establishes the foundational structure for the Symfony framework integration, enabling the use of Symfony's dependency injection container and routing system.
src · high confidence
Test coverage
Add tests for the Tab Invoice feature; Added functional tests for the complete tab workflow; Added test bootstrap for Symfony environment; Added unit tests for the Tab domain model.
Dependencies
Initial project setup with Symfony 6.2 and PHP 8.2 dependencies
The application's dependency manifest (composer.json) and lock file have been added, establishing a PHP 8.2 environment with Symfony 6.2 components (Framework, Console, Config, etc.), Doctrine (DBAL, Migrations, Annotations), Tactician, and PHPUnit 9.6. This provides the foundational libraries required to run the application.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 54 → 51 (-2.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 97 (-2.3)
- Architecture 100 → 74 (-26.5)
- Maturity 45 → 37 (-7.7)
- Readiness 46 → 50 (+4.7)
- Security 59 → 82 (+22.9)
- Accessibility 68 (new)
Resolved (27)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (composer.lock)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (composer.lock)
- High CVE: [GHSA redacted] (composer.lock)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Low CVE: [GHSA redacted] (composer.lock)
- Low CVE: [GHSA redacted] (composer.lock)
- Low CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 7 more
New (48)
- Abandoned package: doctrine/annotations
- Critical CVE: [GHSA redacted] (composer.lock)
- Documentation: no usage examples (README.md)
- Duplicated block (17 lines × 2) (src/Domain/Tab/Events/DrinksOrdered.php)
- High CVE: [GHSA redacted] (composer.lock)
- High CVE: [GHSA redacted] (composer.lock)
- High CVE: [GHSA redacted] (composer.lock)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Low CVE: [GHSA redacted] (composer.lock)
- Low CVE: [GHSA redacted] (composer.lock)
- Low CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- …and 28 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
yourwebmaker/cqrs.nu-php was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 75ee5a389d01a1ac3fef337dd67ae0fd7e0c3c5c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.