A Power BI–style web dashboard prototype that measures how many days pass from DCR Created Date (day 0) until the request reaches a stop state (decision).
npm install
npm run devOpen http://localhost:5173 in your browser.
- Created Date Range – filter by date within 2025
- Product – multi-select product filter
- Customer – multi-select customer filter
- Stop State – multi-select stop state filter
- Status – toggle between All / Completed / In Progress
All metrics update dynamically with filters:
- Avg Days: Initial Review
- Avg Days: Rejected (Not Aligned with Strategy)
- Avg Days: Evidence Gathering
- Avg Days: Engineering Backlog
- Avg Days: Engineering Commitment
- Avg Days: End-to-End
- Total DCR Count
- % Rejected
- % Sent to Engineering
- Bar Chart – Average End-to-End Days by Product
- Stacked Column – DCR Count by Stop State per Product
- Histogram – Distribution of End-to-End Days (bins: 0–7, 8–14, 15–30, 31–60, 61–90, 90+)
- Trend Line – Monthly DCR Created count in 2025
- Sortable by any column (click headers)
- Searchable (free-text filter)
- Shows: DCR ID, Title, Customer, Product, Created Date, Stop State, Stop State Date, E2E Days, Status, Feature Request ID
The clock always starts at DCR.createdDate.
A DCR reaches a "full stop" when it hits one of these states:
- Rejected – Not Aligned with Strategy
- Evidence Gathering (Reject – Evidence Not Sufficient)
- Engineering Backlog
- Engineering Commitment
The stop state is determined by the earliest populated stop-state date. If none exist, the DCR is marked as In Progress and excluded from end-to-end averages.
src/
├── App.tsx # Main app with filter logic
├── App.css # Power BI–style dashboard CSS
├── index.css # Global styles
├── types.ts # TypeScript interfaces
├── data/
│ └── generateMockData.ts # Programmatic mock dataset (60 DCRs)
├── utils/
│ └── dcrUtils.ts # dateDiffInDays, resolveStopState, calculateAverages
└── components/
├── FiltersPanel.tsx # Sidebar filter slicers
├── KpiCards.tsx # KPI metric cards
├── ChartsSection.tsx # 4 Recharts visualizations
└── DcrTable.tsx # Sortable/searchable data table
- Microsoft Defender for Endpoint
- Microsoft Defender for Identity
- Microsoft Sentinel
- Microsoft Defender for Office 365
- React 18 + TypeScript
- Vite (dev server & build)
- Recharts (charting library)
- date-fns (date utilities)