proophsoftware/fee-office
43.8
Weak · 21 September 2026
6.6k
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a domain-driven, event-sourced application called 'Fee Office' that manages real estate and administrative operations. It provides APIs for contact administration, contract management, and realty registration, each with their own database schemas and event streams. The architecture leverages CQRS and an event machine to handle commands, events, and queries across these distinct business domains.
Features
Add Swagger UI for API documentation
Added Swagger UI to the public directory, providing an interactive documentation interface for the API. The configuration includes endpoints for 'Realty Messagebox', 'Contact Administration', and 'Contract Messagebox', enabling users to explore and test these specific API modules directly through the browser.
public · high confidence
Add Swagger support for CRUD modules
The application now includes utility classes for generating Swagger/OpenAPI documentation from FastRoute definitions, including \Swagger\, \Operation\, \Parameter\, and \Path\ classes that convert route patterns into structured operation definitions. Additionally, a \ContractContactAdministrationProxy\ and its factory are introduced to bridge the contract layer with the contact administration module, and the \ConfigProvider\ is updated to register the new dependencies and delegators for application configuration.
src/App · high confidence
Add contact card management API and persistence
The Contact Administration module now exposes a full CRUD API for managing contact cards (representing persons or companies) and their associated bank accounts. Users can create, retrieve, and search for contact cards, as well as attach bank accounts to existing cards. The module includes a document store for persistence and a script to import initial contact data from a JSON file. Additionally, a Swagger schema endpoint is provided to expose the API's OpenAPI specification.
src/ContactAdministration · high confidence
Add contract management domain and API
Introduced the ContractManagement module, providing the infrastructure for managing rental contracts. This includes the domain model for contracts and contacts, a context provider to resolve superior and subordinate parties, and an API layer defining commands (AddContract), events (ContractAdded), and queries (HealthCheck). The module also registers HTTP endpoints for a message box and schema generation, wired via a config provider and service factories for the event machine, document store, and event store.
src/ContractManagement · high confidence
Added database schemas and RabbitMQ configuration for new domain services
The environment now includes initial database schemas and user permissions for six new domains: realty, contact, fee, payment, accounting, and contract. Each domain receives its own PostgreSQL schema with event stream and projection tables, along with dedicated database users and grants. Additionally, a RabbitMQ broker definition and configuration are added, establishing the 'event-machine' vhost, 'ui-queue' and 'ui-exchange' bindings, and SSL-enabled management and STOMP interfaces.
env · high confidence
Introduce realty registration domain with commands, events, and queries
Added the initial structure for the realty registration feature, including command and event definitions for buildings, entrances, and apartments, along with corresponding query resolvers and pre-processors that validate the existence of related entities. The change also includes the event machine configuration, HTTP middleware for message handling, and import data files for testing.
src/RealtyRegistration · high confidence
Behavioural changes
Add book template structure and styling
The book template now includes a complete set of PHP templates (head, body, nav, footer, etc.) that define the HTML structure, CSS styling, and helper functions for rendering the documentation site. This change introduces the visual and structural foundation for the book's appearance and layout.
book/template · medium confidence
Configuration providers for contact, contract, and realty registration added
The application's configuration has been updated to include new service providers for Contact Administration, Contract Management, and Realty Registration, alongside the Zend Problem Details library. This enables the application to recognize and initialize these specific functional areas through their respective configuration providers.
config · high confidence
Replaced Zend Expressive skeleton with Fee Office DDD/CQRS/ES demo
The project has been refactored from a generic PHP application skeleton to a specific domain-driven design, CQRS, and event sourcing demo application called 'Fee Office'. This change updates the README to reflect the new purpose, introduces a Docker Compose configuration to run the application and its dependencies (PostgreSQL, PHP, Nginx), and adds a test script for the new domain logic. Additionally, the license header was updated from Zend Technologies to prooph software GmbH.
(repo-wide) · high confidence
Dependencies
Introduce Fee Office domain modules and update root dependencies
Added three new domain modules—Contact Administration, Contract Management, and Realty Registration—each with their own composer.json defining dependencies like proophsoftware/event-machine and zendframework components. The root composer.json was updated to include these local path repositories and require the new packages, while also adding bookdown and commonmark extensions for documentation. The root project name and description were changed to reflect the Fee Office API Gateway.
(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
Score
- CAI 48 → 44 (-4.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.1)
- Architecture 100 → 71 (-29.0)
- Maturity 54 → 56 (+2.8)
- Readiness 17 → 15 (-2.4)
- Security 96 → 96 (+0.4)
Resolved (12)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (22 lines × 2) (src/ContractManagement/src/Http/MessageSchemaMiddleware.php)
- Duplicated block (8 lines × 2) (src/ContractManagement/src/Http/MessageSchemaMiddleware.php)
- Duplicated block (9 lines × 3) (src/ContactAdministration/src/Infrastructure/System/ServiceFactory.php)
- High CVE: [GHSA redacted] (composer.lock)
- High vulnerability: [GHSA redacted] (composer.lock)
- No exposed public API
- Test reliability not included
- The README is a one-paragraph project description with no installation or setup steps for the demo application itself. (README.md)
- early-stage repository — too little history to judge knowledge freshness
- single-maintainer — knowledge-concentration (bus factor) risk
New (33)
- Abandoned package: zendframework/zend-component-installer
- Abandoned package: zendframework/zend-config-aggregator
- Abandoned package: zendframework/zend-diactoros
- Abandoned package: zendframework/zend-expressive
- Abandoned package: zendframework/zend-expressive-fastroute
- Abandoned package: zendframework/zend-expressive-helpers
- Abandoned package: zendframework/zend-servicemanager
- Abandoned package: zendframework/zend-stdlib
- Coverage not measured — no coverage collector is wired up
- Duplicated block (10 lines × 3) (src/ContactAdministration/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (11 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (19 lines × 2) (src/ContractManagement/src/Http/MessageSchemaMiddleware.php)
- Duplicated block (25 lines × 2) (src/ContractManagement/src/Model/Realty/ApartmentId.php)
- Duplicated block (30 lines × 2) (src/ContractManagement/src/Http/MessageSchemaMiddleware.php)
- Duplicated block (5 lines × 2) (src/ContractManagement/src/Model/Contract/EndDate.php)
- Duplicated block (6 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (6 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (6 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (6 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- Duplicated block (6 lines × 2) (src/ContractManagement/src/Infrastructure/System/ServiceFactory.php)
- …and 13 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
proophsoftware/fee-office 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 480a8b71489d35b17069f5c79f3712f66ce06c75 — 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.