FlowLens is a focused internship-assessment prototype for developer productivity review.
Engineering managers and developers both need a quick way to answer:
- How did one developer's month go?
- Where is delivery slowing down?
- Is quality at risk?
- What is one practical next action?
The assignment emphasizes product thinking over dashboard volume.
FlowLens is built to keep that decision path short and explainable.
Primary scope is the IC flow:
- Select developer + month
- See five assignment metrics
- Read a short interpretation
- Get 1-2 practical next steps
This keeps the MVP aligned with the rubric and avoids feature sprawl.
A minimal manager summary is included only as a secondary extension, not as a second product.
Workbook-aligned entities (normalized locally):
developersissuespullRequestsdeploymentsbugs
Retained fields are intentionally limited to assignment needs:
- Developer identity and team mapping
- Issue
inProgressAt,doneAt - PR
openedAt,firstReviewAt,mergedAt - Deployment
completedAt,status,environment,leadTimeDays - Bug
escapedToProd,monthFound
All five are deterministic and month/developer filtered explicitly:
- Lead time for changes
Average lead time for successful production deployments in the selected month.
Uses precomputedleadTimeDayswhen available; if missing, falls back toPR openedAt -> first successful deployment after merge. - Cycle time
Average time from issueinProgressAttodoneAtfor issues done in selected month. - Bug rate
escaped production bugs / completed issuesin the same selected month. - Deployment frequency
Count of successful production deployments in selected month. - PR throughput
Count of merged PRs in selected month.
Empty inputs and division-by-zero cases return safe zero values.
Interpretation is rule-based (not LLM-generated at runtime):
- Detects likely delay location (implementation vs post-merge release path)
- Flags quality concern based on bug-rate thresholds
- Adds 1-2 concrete follow-up actions
- Keeps language constructive and short for one-glance reading
Manager summary uses a compact team rollup with a health signal and one support note.
- React 18 + Vite + TypeScript
- Tailwind CSS (utility-first styling, low overhead)
- Zod (data contract validation)
- Vitest (basic unit tests for normalization and metrics logic, including interpretation and manager rollup)
- Local JSON data pipeline (no external services)
No paid APIs, billing dependencies, or cloud services are required.
AI was used as a development assistant for drafting code structure and copy variations.
Final metric math, rule thresholds, and product trade-offs were manually reviewed and adjusted for explainability.
Guardrails followed:
- No hidden model-dependent runtime behavior
- No fabricated external claims
- No replacing assignment definitions with alternate internet definitions
- Loading, empty, and error states are explicit
- Form controls are labeled and keyboard-friendly
- View switch exposes selected state
- Missing data paths fail safely with readable fallback copy
- Start in IC view and state the scope decision.
- Pick a developer and month with mixed signals.
- Walk through the five metrics quickly.
- Explain interpretation sentence and why actions are practical.
- Switch to manager summary and show compact team/month rollup.
- Close with design trade-off: depth in one flow over broad dashboard coverage.
npm install
npm run normalize:data
npm run devnpm run test
npm run lint
npm run buildsrc/App.tsx- IC flow + minimal manager summary UIsrc/metrics/assignmentMetrics.ts- deterministic metric mathsrc/metrics/interpretation.ts- rule-based narrative + next stepssrc/metrics/managerSummary.ts- compact team/month rollupsrc/contracts/workbook.ts- raw workbook contractsrc/contracts/normalized.ts- normalized contractsrc/pipeline/normalizeWorkbook.ts- normalization logic