JMLamodiere/tdd-demo-forumphp2020
57.7
Adequate · 20 September 2026
476
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a Symfony-based web service that allows users to register running sessions by submitting distance and shoe type data. It automatically enriches each session record with current weather temperature data fetched from the AccuWeather API and persists the complete information in a PostgreSQL database.
Features
Add running session registration with weather integration
Users can now register a running session by providing an ID, distance, and shoe type. The system automatically fetches the current temperature via a weather provider and stores it alongside the session data. This change introduces the core domain model for running sessions, a repository interface for persistence, and a command handler that orchestrates the registration process.
src/Application, src/Domain · high confidence
Added Docker configuration and initial database schema for running session tracking
The project now includes Dockerfiles to build PHP 7.4 CLI environments with Xdebug and PostgreSQL 13, along with an initialization script that creates the 'RUNNING\_SESSION' table (storing ID, distance, shoes, and temperature). A corresponding Gherkin feature file defines the behavior for registering a running session enriched with weather data.
docker, features · high confidence
Initial Symfony 4.4 application skeleton
The application now uses the Symfony 4.4 framework, introducing the standard entry points for HTTP requests and console commands. The public/index.php file handles incoming requests through the kernel, while bin/console provides a CLI interface for application tasks. The src/Kernel.php class configures the application environment, registers bundles, and loads configuration and routing files from the config directory.
bin, public, src · high confidence
Initial Symfony 4.4 configuration and service wiring
The application is initialized with a Symfony 4.4 skeleton, introducing standard configuration files for environment loading, bundle registration (including NelmioCorsBundle and WebProfilerBundle), and routing. Service definitions are established via autowiring for the application and infrastructure controllers, with specific public visibility granted to command handlers for testing purposes. Additionally, a Guzzle HTTP client is configured to connect to the AccuWeather API using environment variables for the base URI and API key.
config · high confidence
Initial implementation of running session persistence and weather integration
This change introduces the core infrastructure components for the running session feature. It adds a Postgres repository to persist running sessions (including distance, shoes, and temperature) to the database, and implements an HTTP provider to fetch current weather conditions from AccuWeather for Paris. Additionally, it provides the necessary HTTP layer components: a controller to handle PUT requests for registering sessions, along with serializers to deserialize incoming JSON commands and serialize the resulting session data for API responses.
src/Infrastructure · high confidence
Initial project scaffolding with Symfony, testing, and CI infrastructure
This change introduces the foundational structure for the application, including a Symfony 4.4 skeleton, environment configuration files (.env, .env.test), and a Docker Compose setup for local development and testing (PHP, PostgreSQL, Wiremock). It establishes a comprehensive testing strategy using PHPUnit for unit tests and Behat for behavior-driven development, supported by a Makefile for streamlined commands. Continuous integration is configured via Travis CI, and code quality is enforced through PHP CS Fixer. The project also includes API documentation in OpenAPI format and a README detailing the refactoring steps and architecture.
(repo-wide) · high confidence
Test coverage
Added test bootstrap configuration; Added test coverage for Infrastructure components; Initial Behat integration with mocked secondary ports.
Dependencies
Initial project setup with Symfony 4.4 and development tooling
This change introduces the initial dependency configuration for the project, establishing a Symfony 4.4 skeleton as the core framework. It specifies PHP 7.4+ as the runtime requirement and includes essential bundles such as Doctrine, Guzzle, and Symfony's console, dotenv, framework, serializer, and yaml components. For development and testing, it adds Behat, PHPUnit, Prophecy, PHP CS Fixer, and the Symfony Web Profiler, ensuring the environment is ready for TDD workflows and code quality checks.
(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 61 → 58 (-3.0)
- Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 88 → 66 (-22.3)
- Readiness 38 → 41 (+3.1)
- Security 98 → 86 (-11.5)
Resolved (9)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- High IaC: DS-0002 (docker/php/Dockerfile)
- Low IaC: DS-0026 (docker/php/Dockerfile)
- No exposed public API
- Test reliability not included
- The live-coding tour links to YouTube and speakerdeck talks but does not explain what the demo itself does or how it demonstrates TDD. (README.md)
- early-stage repository — too little history to judge knowledge freshness
- single-maintainer — knowledge-concentration (bus factor) risk
New (24)
- Critical CVE: [GHSA redacted] (composer.lock)
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- End-of-life framework: Symfony 4
- 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 IaC: WD-COMPOSE-0002 (docker-compose.yml)
- High IaC: WD-DOCKER-0001 (docker/php/Dockerfile)
- 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 CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium CVE: [GHSA redacted] (composer.lock)
- Medium IaC: WD-DOCKER-0003 (docker/php/Dockerfile)
- …and 4 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
JMLamodiere/tdd-demo-forumphp2020 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 20 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 cff6d3bcfd3447429500ce58ec9750522f38178f — 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.