Skip to content
CAI
Software that uses CAICheck a score

danitome24/silex-ddd-skeleton

47.6

Weak · 21 September 2026

2.8k

lines of production code

PHP

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This release introduces a comprehensive architectural shift to a layered, command-bus-driven design, replacing the previous Silex-based structure with a modular Slx namespace. Key features include full user authentication (sign-in, sign-up, sign-out) and task management (create, list, remove) supported by new Doctrine repositories and a command handler infrastructure. The update also establishes a robust email notification system for user registration and task creation, alongside a Docker-based development environment for simplified local setup.

Features

Add Docker-based development environment

The project now includes a Dockerfile, docker-compose.yml, and supporting scripts to containerize the application using PHP 7.1 with Apache, MySQL 5.6, and various PHP extensions. This allows users to easily set up a local development environment by running 'docker-compose up -d' as described in the updated README.md, which also documents the new Docker commands for managing the stack.

(repo-wide) · high confidence

Add sign-out use case

A new SignOutUserUseCase has been introduced to handle user sign-out. This class, located at src/Slx/Application/UseCase/User/SignOutUserUseCase.php, provides an execute method that clears the current session, effectively logging the user out.

src/Slx/Application/UseCase · high confidence

Add task creation and listing templates

Added new Twig templates for the task feature: a create form that collects title, description, and users, and a list view that displays tasks in a table with a delete action and a link to create new tasks. This introduces the UI for managing tasks, including the ability to create and view tasks, as well as remove them via a POST/DELETE form.

src/Slx/UserInterface/Twig/Views/templates/views/task · high confidence

Add task management capabilities: create, list, and remove tasks

Users can now create new tasks, view a list of available tasks, and remove tasks. This change introduces three new controllers—CreateTaskController, ListTaskController, and RemoveTaskController—which handle the corresponding HTTP requests. The create controller renders a form for title, description, and user assignment, while the list controller displays tasks for the current user, and the remove controller handles task deletion.

src/Slx/UserInterface/Controllers/Task · high confidence

Added command handlers for creating and removing tasks

New command handlers were introduced to support task management: CreateTaskCommandHandler enables users to create new tasks by specifying a title, description, and associated user, while RemoveTaskCommandHandler allows for the deletion of existing tasks. These additions provide the backend logic for task creation and removal operations.

src/Slx/Application/CommandHandler/Task · high confidence

Added email templates for user registration and task creation notifications

Users will now receive email notifications for new user registrations and when tasks are created. This change introduces two new email template classes, RegisterUserEmail and TaskCreatedUserEmail, which define the recipients, template paths, and parameters for these specific notification types.

src/Slx/Application/EmailTemplate · high confidence

Added sign-in and sign-up form definitions

Introduced the PHP form definitions for user authentication, including a sign-in form requiring email and password, and a sign-up form requiring username, email, and password. Each form includes validation constraints such as non-blank fields, email format validation, and length limits, enabling the application to process user registration and login requests.

src/Slx/UserInterface/Form · high confidence

Added user authentication and account management controllers

Introduced new controllers to support user sign-up, sign-in, and sign-out flows. The SignUpController handles new user registration with email and password validation, the SignInController manages user login using a command bus, and the SignOutController clears the user session. Additionally, a HomeController was added to display the home page for authenticated users, redirecting unauthenticated users to the sign-in page.

src/Slx/UserInterface/Controllers/User · medium confidence

Added user login and signup templates

Introduced new Twig templates for the user authentication flow, specifically login.html.twig and signup.html.twig. These templates provide the UI for users to sign in or create a new account, featuring form fields for email, password, and username, styled with Bootstrap grid classes.

src/Slx/UserInterface/Twig/Views/templates/views/user · high confidence

Domain model for tasks and users with event-driven notifications

The application now supports creating and managing tasks, as well as registering users. The domain layer introduces a Task entity with status management (open, closed, removed) and a User entity with authentication and session handling. A domain event system has been added, allowing the system to trigger notifications: users receive a welcome email upon registration, and task creators receive a notice email when a task is created. Additionally, password validation enforces a minimum length and character requirements, and specific exceptions are thrown for invalid states like non-existent tasks or users.

src/Slx/Domain · high confidence

Implemented user authentication and password handling services

Added new infrastructure services for user authentication and password management. The AuthenticateUserService now manages user sessions by storing the username in the session upon successful authentication and provides a method to clear the session. Additionally, the PasswordHashingService implements password hashing using SHA1 and provides a method to verify passwords against stored hashes.

src/Slx/Infrastructure/Service/User · high confidence

Implemented user sign-in and sign-up command handlers

Added SignInUserCommandHandler and SignUpUserCommandHandler to process authentication and registration requests. The sign-in handler verifies user credentials and throws specific exceptions for missing users or password mismatches, while the sign-up handler creates new user accounts, ensuring uniqueness by checking for existing emails and hashing passwords before persistence.

src/Slx/Application/CommandHandler/User · high confidence

Initialize infrastructure layer with Silex application and middleware

The infrastructure layer is established with a new Silex application configuration that registers core services including form handling, session management, Twig templating, and Doctrine ORM. Database connection details are now read from a config.ini file, and the application is wired to dispatch domain events for user registration and task creation, triggering corresponding email notifications and logging.

src/Slx/Infrastructure · high confidence

Introduce Mailer service for sending emails

Added a new Mailer service in the Mail infrastructure layer that configures SMTP transport via PHPMailer and renders email templates using Twig. The service reads mail configuration from a YAML file and provides a send method that accepts an EmailTemplateInterface, allowing the system to dispatch emails based on defined templates.

src/Slx/Infrastructure/Service/Mail · high confidence

Introduce command bus for handling application commands

Added a new CommandHandler component that routes and executes commands via a central bus. The implementation includes a CommandHandler class that delegates execution to registered handlers, a corresponding interface, and a specific exception for missing handlers. This provides a structured way to process application commands through a single entry point.

src/Slx/Application/CommandHandler · medium confidence

Introduce initial user interface controllers and routing

Adds the primary routing and controller definitions for the user-facing web interface. This includes endpoints for signing in, signing up, and signing out, as well as protected routes for the home page, task creation, task listing, and task deletion. An error handler is also configured to render a generic 5xx error page when debugging is disabled.

src/Slx/UserInterface/Controllers · high confidence

Introduce service layer for user and task management

The application now registers controllers and services for user authentication (sign in, sign up, sign out) and task management (create, list, remove) within the service container. This includes wiring up command handlers for user operations, a mailer service, and repositories for users and tasks, enabling the core user and task features to function.

src/Slx/Infrastructure/Service · high confidence

New email templates for user notifications

Users will now receive email notifications for specific events. A new 'newtask' template sends an email when a task is assigned to a user, and a 'register' template sends a welcome message upon registration.

src/Slx/UserInterface/Twig/Views/templates/emails · high confidence

Behavioural changes

Add Bootstrap 4 layout and index template

The application now uses a new base layout template that integrates Bootstrap 4 for styling and includes a Google Analytics tracking script. The index page template was added to display a welcome message and a link to the sign-in page, utilizing the new layout structure.

src/Slx/UserInterface/Twig/Views/templates · medium confidence

A new home page template has been added, extending the site's main layout. The page displays a 'Home' heading and a personalized greeting using the current user's username. It also includes a 'Log out' link that points to the 'signout' route, allowing signed-in users to end their session directly from the home view.

src/Slx/UserInterface/Twig/Views/templates/views/home · high confidence

Added default configuration files and updated Twig template path

New default configuration files were added for database and mail settings, providing initial values for MySQL connection and SMTP server. Additionally, the Twig template directory path in the production configuration was updated to point to a new location within the src directory.

config · medium confidence

Introduce Doctrine-based persistence repositories for Tasks and Users

The application now uses Doctrine ORM for data access, with new repository implementations for Tasks and Users. The AbstractEntityRepository provides common persistence methods (fetch, save, fetch by criteria), while TaskDoctrineRepository adds task-specific operations like adding tasks and fetching available tasks by user. UserDoctrineRepository enables user lookup by email. This change shifts the persistence layer from any previous implementation to a structured Doctrine-based approach, supporting core user and task management features.

src/Slx/Infrastructure/Persistence/Doctrine/Repository · high confidence

Introduce command objects for user and task operations

A new command bus architecture is introduced via a \CommandInterface\ and specific command classes for user sign-in (\SignInUserCommand\), user sign-up (\SignUpUserCommand\), task creation (\CreateTaskCommand\), and task removal (\RemoveTaskCommand\). Each command encapsulates the necessary data (e.g., email, password, title, description, user ID) and specifies a corresponding service handler (e.g., \signin.service\, \signup.service\), enabling a structured approach to handling application-level operations.

src/Slx/Application/Command · high confidence

Introduce console application and restructure error templates

A new console application is introduced in src/Slx/UserInterface/Console/console.php, configuring Symfony Console with Doctrine helpers and commands for database and ORM operations. Additionally, error templates (404, 4xx, 500, 5xx, and default) have been moved from the root templates/errors directory to src/Slx/UserInterface/Twig/Views/templates/errors, aligning the project's file structure.

src/Slx/UserInterface/Console, src/Slx/UserInterface/Twig/Views/templates/errors · medium confidence

Removed Silex-based application entry points and templates

The Silex application bootstrap file (src/app.php), the console application setup (src/console.php), and the controllers file (src/controllers.php) have been deleted, along with the associated Twig templates (templates/index.html.twig and templates/layout.html.twig). This removes the default Silex routing, error handling, and template structure from the project.

src, templates · high confidence

Restructured application entry points and added form/service/Controller layers

The web front controllers (index.php and index\_dev.php) have been refactored to load a new modular application structure under the Slx namespace, specifically requiring the new form, service, middleware, and controllers layers. Additionally, the development entry point (index\_dev.php) has been updated to allow access from the Docker host IP (172.20.1.1) alongside localhost addresses.

web · medium confidence

Updated console entry point to use new application structure

The console entry point has been updated to load the application from the new \Slx/Infrastructure/app.php\ path instead of the previous \src/app.php\. Additionally, the console script now explicitly loads the middleware configuration and the specific console command definitions from \src/Slx/UserInterface/Console/console.php\, reflecting a reorganization of the application's entry points.

bin · medium confidence

Test coverage

Added unit tests for user command handlers and commands

Added unit tests for the user command handlers (SignIn and SignUp) and the corresponding command objects, verifying correct construction and handler execution paths. Removed the legacy integration test file (controllersTest.php) that previously tested the homepage route.

tests · high confidence

Dependencies

Updated PHP dependencies and added new libraries

The project's composer.json was updated to include several new dependencies: doctrine/orm, dflydev/doctrine-orm-service-provider, ramsey/uuid, symfony/yaml, monolog/monolog, phpmailer/phpmailer, and doctrine/annotations. Additionally, phpunit/phpunit was added to the dev dependencies, and the autoload configuration was updated to include a PSR-4 mapping for the Test namespace.

(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 50 → 48 (-1.9)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 82 (-17.7)
  • Maturity 54 → 48 (-5.4)
  • Readiness 26 → 30 (+4.2)
  • Security 78 → 80 (+2.4)
  • Accessibility 68 (new)

Resolved (21)

  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (composer.lock)
  • Critical CVE: [GHSA redacted] (composer.lock)
  • 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 CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • 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)
  • No exposed public API
  • Test reliability not included
  • early-stage repository — too few commits for a meaningful bus factor
  • …and 1 more

New (32)

  • Abandoned package: silex/silex
  • Abandoned package: silex/web-profiler
  • Abandoned package: symfony/class-loader
  • Abandoned package: symfony/debug
  • Abandoned package: symfony/security
  • Critical CVE: [GHSA redacted] (composer.lock)
  • Critical CVE: [GHSA redacted] (composer.lock)
  • Critical CVE: [GHSA redacted] (composer.lock)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • High CVE: [GHSA redacted] (composer.lock)
  • Low CVE: [GHSA redacted] (composer.lock)
  • Low CVE: [GHSA redacted] (composer.lock)
  • Low CVE: [GHSA redacted] (composer.lock)
  • Low IaC: DS-0026 (Dockerfile)
  • …and 12 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

danitome24/silex-ddd-skeleton 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 9ed73810d8c72838b0e6943c48571e9b68c05ff1 — 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-28e75b8e3254.