The decision engine behind a delivery dashboard for a Delivery Lead: it answers the three questions you ask in every status meeting —
- Is this project on track? (RAG health from progress vs schedule)
- What should I worry about first? (a ranked probability × impact risk register)
- When will it actually finish? (burndown with projected completion)
The hard logic is implemented and fully tested; the README's roadmap shows how it wires into a Laravel + React dashboard.
use DeliveryDashboard\Health\HealthCalculator;
use DeliveryDashboard\Risk\RiskScorer;
use DeliveryDashboard\Burndown\BurndownCalculator;
// 1) Health — 40% done but 80% of the time gone → red
$status = (new HealthCalculator())->evaluate(percentComplete: 0.40, percentTimeElapsed: 0.80);
$status->color(); // 'red' (HealthStatus::OffTrack)
// 2) Risk register — ranked, highest severity first
$risks = (new RiskScorer())->rank([
['title' => 'Vendor API delay', 'probability' => 5, 'impact' => 5],
['title' => 'Minor copy review', 'probability' => 1, 'impact' => 2],
]);
$risks[0]['title']; // 'Vendor API delay'
$risks[0]['severity']; // RiskSeverity::Critical
// 3) Burndown — ideal vs actual + projected completion
$burndown = (new BurndownCalculator())->compute(
totalScope: 100, totalDays: 10,
actualRemaining: [100, 95, 90, 85, 78, 70], // behind pace
);
$burndown['onTrack']; // false
$burndown['projectedCompletionDay']; // ~16.7 (slips well past day 10)composer install
composer testsrc/
├── Health/
│ ├── HealthStatus.php # RAG enum (label + color)
│ └── HealthCalculator.php # progress vs schedule → status
├── Risk/
│ ├── RiskSeverity.php # low | medium | high | critical
│ └── RiskScorer.php # probability × impact, ranked register
└── Burndown/
└── BurndownCalculator.php # ideal vs actual + projected completion
database/schema.sql # reference persistence model (MySQL)
docs/api.md # REST API contract for the HTTP layer
- RAG health calculator — tested
- Risk matrix + ranked register — tested
- Burndown (ideal / actual / projection) — tested
- Reference DB schema + REST API contract
- HTTP layer (Laravel): projects, milestones, risks endpoints
- Dashboard UI (React + TypeScript): RAG cards, burndown chart, risk heatmap
- Stakeholder status export (PDF / shareable link)
PHP 8.3 · PHPUnit · (planned) Laravel · Inertia · React · TypeScript · MySQL
MIT © Alexander Sánchez Torrejano