14 KiB
Pilot Analytics Dashboard - Development Roadmap
Project Duration: ~4-5 weeks (25-30 working days)
Start Date: April 28, 2026
Target Delivery: Late May 2026
Source Files
This roadmap is derived from the following source files:
- Primary:
Pilot_Dashboard_PO_Brief_v1.md(v1.5) - Primary:
Pilot_Dashboard_Requirements_v1.md(v1.5) - Supporting:
plan-pilotAnalyticsDashboard.prompt.md - Supporting:
Pilot-Dashboard-UI-UX-Design-Specification.md - Supporting visual reference:
Sample Pilot Dashboard.pngand the PyQt mockup
When source documents conflict, the v1.5 PO brief and v1.5 technical requirements take precedence.
Roadmap Overview
This roadmap is divided into 4 phases with specific deliverables and time estimates. Each phase culminates in a PR-ready checkpoint.
Phase Breakdown
- Phase 1 (Foundation): 5-6 days
- Phase 2 (Core UI): 7-8 days
- Phase 3 (Analytics & Polish): 6-8 days
- Phase 4 (QA & Release): 4-5 days
Total: 22-27 working days (frontend only)
Phase 1: Foundation & Contracts (5-6 Days)
Deliverables
- Extended job statuses (COMPLETED, INVOICED)
- Dashboard data models and API service layer
- Role-based home branching
- Backend endpoint specification document
- Dev environment with mock data setup
Tasks
| Task | Owner | Days | Dependencies | Notes |
|---|---|---|---|---|
| 1.1 Extend JobStatus enum + global constants | Frontend | 1.0 | None | Update global.ts, JobStatuses map, status pipes |
| 1.2 Design dashboard data contracts (TypeScript interfaces) | Frontend | 1.0 | None | Define KPI, Summary, Operations, ActiveJobs, Trend, Performance models |
| 1.3 Implement dashboard service with 5 endpoints | Frontend | 1.5 | 1.2 | GET /api/dashboard/pilot/[kpi, summary, active-jobs, trend, performance] |
| 1.4 Add service unit tests with mock data | Frontend | 0.75 | 1.3 | Jasmine tests for service methods; mock HttpClient |
| 1.5 Update dashboard component role branching | Frontend | 0.75 | 1.1 | Inject AuthService, template *ngIf branching |
| 1.6 Backend spec: finalize 5 endpoints (NO implementation) | Backend/Frontend | 1.0 | 1.2 | Document request/response contracts; ready for backend sprint |
| 1.7 Setup mock data provider for dev | Frontend | 0.5 | 1.2 | Mock service for UI development without backend |
Phase 1 Checkpoint: PR ready, all constants aligned, service contracts finalized, no backend dependency blocking UI work.
Commit Messages:
refactor(global): add completed and invoiced job statuses
feat(dashboard): add pilot dashboard api service and response models
feat(home): add pilot-only dashboard branch with fallback disclaimer
docs(dashboard): specify pilot dashboard backend api contracts
Phase 2: Core UI Delivery (7-8 Days)
Deliverables
- Responsive 2-column layout
- KPI cards, daily summary, operations panels
- Active jobs list with status coloring and progress bars
- All core sections visually complete and clickable
Tasks
| Task | Owner | Days | Dependencies | Notes |
|---|---|---|---|---|
| 2.1 Build responsive grid layout (65/35 split) | Frontend | 1.5 | 1.5 | PrimeNG p-grid, mobile stack order |
| 2.2 Create KPI card component + template | Frontend | 1.0 | 1.1 | Icons, historical sub-lines, responsive cards |
| 2.3 Implement daily summary strip (today vs yesterday) | Frontend | 0.75 | 1.1 | Trend arrows, percent deltas, green/red coloring |
| 2.4 Add operations today panel (distance + spray volume) | Frontend | 0.5 | 1.1 | 2-metric strip below summary |
| 2.5 Build active jobs list panel | Frontend | 2.0 | 1.1 | Status badges, left color bar, progress bars, row click → job detail |
| 2.6 Implement job row status colors (NEW=Blue, IN PROGRESS=Yellow, COMPLETED=Green) | Frontend | 0.75 | 2.5 | IN PROGRESS groups READY, DOWNLOADED, SPRAYED |
| 2.7 Add scroll behavior to active jobs panel | Frontend | 0.5 | 2.5 | Independently scrollable; handles 10+ jobs |
| 2.8 Unit + integration tests for layout (responsive, mobile) | Frontend | 0.5 | 2.1-2.7 | Karma tests, viewport mocking |
| 2.9 Accessibility audit (ARIA, keyboard nav, contrast) | Frontend | 0.5 | 2.1-2.7 | Lighthouse, manual review |
Phase 2 Checkpoint: Left column fully functional, responsive on mobile/tablet, all clicks wired to mock data.
Commit Messages:
feat(dashboard-ui): add responsive pilot dashboard layout shell
feat(dashboard-kpi): implement kpi cards daily summary and operations strip
feat(active-jobs): implement status-driven list with progress and navigation
test(dashboard-layout): add responsive and accessibility tests
Phase 3: Analytics & Polish (6-8 Days)
Deliverables
- Trend charts (hours flown, hectares per day)
- Performance indicators (XT Error, Altitude)
- Date range controls
- i18n for EN, PT, ES
- Error and loading states
Tasks
| Task | Owner | Days | Dependencies | Notes |
|---|---|---|---|---|
| 3.1 Integrate p-chart for hours flown (line chart) | Frontend | 1.0 | 1.1 | Chart.js 2.9.3, PrimeNG wrapper |
| 3.2 Integrate p-chart for hectares per day (bar chart) | Frontend | 1.0 | 1.1 | Similar setup; add target line overlay |
| 3.3 Build date range control (calendar picker) | Frontend | 1.0 | 3.1-3.2 | Default current week Mon-Sun; user can change |
| 3.4 Implement XT Error indicator with thresholds | Frontend | 0.75 | 1.1 | Green <1m, Yellow 1-3m, Red >3m; color bar |
| 3.5 Implement altitude indicator with thresholds | Frontend | 0.75 | 1.1 | Target ~3.7m, Good ±0.15m, Monitor ±0.46m, Poor beyond ±0.46m |
| 3.6 Add no-data state for altitude (device dependency) | Frontend | 0.25 | 3.5 | Show placeholder if sprayHeight/radarAlt not available |
| 3.7 Add loading skeletons for all sections | Frontend | 0.75 | 2.1-3.6 | PrimeNG skeleton or custom shimmer; per widget |
| 3.8 Add empty state messages | Frontend | 0.5 | 3.7 | "No jobs assigned", "No data available", etc. |
| 3.9 Implement API error handling & fallbacks | Frontend | 0.75 | 1.3 | Toast notifications, graceful degradation |
| 3.10 Extract i18n strings (EN baseline) | Frontend | 0.5 | All sections | Update locale/en-Application.json, all $localize() calls |
| 3.11 Generate PT and ES translations | Frontend | 1.0 | 3.10 | Run xliffmerge workflow; validate no hardcoded English |
| 3.12 Test all chart responsiveness on mobile | Frontend | 0.5 | 3.1-3.3 | Charts stack/hide on small screens |
| 3.13 Unit tests for indicators, error handling, i18n | Frontend | 0.75 | 3.1-3.11 | Mock API responses, locale switching |
Phase 3 Checkpoint: Right column fully functional, all i18n ready, error scenarios handled.
Commit Messages:
feat(trends): add weekly trend charts with date range controls
feat(performance): add xt error and altitude indicators with threshold bands
feat(dashboard-state): add loading empty and error states for dashboard widgets
feat(i18n): localize pilot dashboard labels for en pt es
Phase 4: QA, Integration & Release Hardening (4-5 Days)
Deliverables
- Full end-to-end testing (mock and real backend if available)
- Role and permission isolation verification
- Cross-browser and device testing
- Performance and bundle size checks
- Release-ready build
Tasks
| Task | Owner | Days | Dependencies | Notes |
|---|---|---|---|---|
| 4.1 Integration test: dashboard calls all 5 backend endpoints correctly | Frontend | 0.75 | 1.3 | Mock or real backend; verify request/response shapes |
| 4.2 Role isolation test: non-pilot roles see disclaimer only | Frontend | 0.5 | 1.5 | Test ADMIN, APP, OFFICER, CLIENT, INSPECTOR roles |
| 4.3 Responsive + mobile layout testing (Chrome, Safari, Firefox, Edge) | Frontend | 1.0 | All phases | Desktop, tablet, mobile; landscape/portrait |
| 4.4 Performance audit (performance and bundle impact) | Frontend | 0.5 | All phases | Record findings and optimize only if needed |
| 4.5 Regression testing: existing home for non-pilots unchanged | Frontend | 0.5 | 1.5 | Verify disclaimer still works; no side effects |
| 4.6 E2E tests (user flow: login → dashboard → click job → detail) | Frontend | 0.75 | 4.1-4.5 | Protractor or Cypress if available |
| 4.7 Lint, build, and final code review | Frontend | 0.5 | All phases | ng lint, ng build, tslint clean |
| 4.8 Documentation: user guide for pilot dashboard features | Frontend | 0.5 | All phases | README section, feature overview, known limitations |
| 4.9 Deployment dry-run and release notes | DevOps/Frontend | 0.5 | 4.7 | Build prod, verify localization (en/pt/es), changelog |
Phase 4 Checkpoint: Ready for staging and user acceptance testing.
Commit Messages:
test(dashboard): add e2e and integration tests
test(dashboard): add role isolation and regression tests
chore(dashboard): final ui polish and accessibility adjustments
docs(dashboard): add pilot dashboard user guide and feature summary
🔗 Backend Parallel Track (NOT included in frontend days)
If backend endpoints do NOT exist yet, backend team should start immediately:
| Task | Owner | Days | Dependencies |
|---|---|---|---|
| B.1 Design and implement 5 dashboard endpoints | Backend | 3-4 | Spec from 1.6 |
| B.2 Add aggregation queries (KPI, trend, performance) | Backend | 2-3 | Database schema review |
| B.3 Implement pilot data isolation (filter by Job.operator = pilotId) | Backend | 1-2 | Auth middleware |
| B.4 Unit tests + load tests (concurrent dashboard calls) | Backend | 1-2 | B.1-B.3 |
| B.5 Integration with frontend (live API testing) | Backend/Frontend | 1-2 | Phase 4.1 |
Backend Total: 8-13 days (parallel to Phase 2-3)
📅 Suggested Sprint Schedule
Week 1 (Mon Apr 28 - Fri May 2)
- Days 1-3: Phase 1 (foundation, contracts, mock service)
- Days 4-5: Phase 2 start (layout, KPI cards)
- PR 1 merged by EOW
Week 2 (Mon May 5 - Fri May 9)
- Days 1-3: Phase 2 complete (active jobs panel, responsive polish)
- Days 4-5: Phase 3 start (charts, date range)
- PR 2 merged by EOW
Week 3 (Mon May 12 - Fri May 16)
- Days 1-3: Phase 3 continue (performance indicators, i18n)
- Days 4-5: Phase 3 complete (error states, final tests)
- PR 3 merged by EOW
Week 4 (Mon May 19 - Fri May 23)
- Days 1-3: Phase 4 (integration testing, E2E, role isolation)
- Days 4-5: Phase 4 complete (perf audit, release prep)
- PR 4 merged by EOW
Week 5 (Mon May 26 - Wed May 28)
- Day 1: Staging deployment, user acceptance testing
- Days 2-3: Bug fixes, final release sign-off
Daily Time Breakdown (Typical)
Assuming 8-hour work day:
- Development: 5-6 hours
- Testing (manual + automated): 1-1.5 hours
- Code review + feedback incorporation: 0.5-1 hour
- Documentation + commit messages: 0.5 hour
- Sync meetings (standup, demos): 0.5 hour
Critical Path & Blockers
Critical Path
- Phase 1.6 (Backend spec) must be done before backend team starts
- Phase 1.3 (Service layer) must exist before Phase 2 UI work (can use mocks)
- Phase 2 (UI) can proceed in parallel with backend if using mock data
- Phase 4.1 (Integration) requires backend endpoints live
Known Risks & Mitigation
| Risk | Impact | Mitigation |
|---|---|---|
| Backend endpoints not ready | Phase 4 blocked | Use mock service in Phase 2-3; swap endpoints at Phase 4 |
| Status enum changes break existing jobs | High | Coordinate with backend; test all job statuses after enum change |
| i18n extraction tool issues | Phase 3 delayed | Pre-test localization workflow in Phase 1 |
| Chart.js version compatibility | Phase 3 blocked | Verify chart.js 2.9.3 works with PrimeNG 9.2.8 early in Phase 3.1 |
| Mobile responsive issues late | Phase 4 delay | Test mobile early (end of Phase 2), not Phase 4 |
| Job detail navigation broken | Phase 4 blocker | End-to-end test in Phase 2 with mock routing |
Effort Distribution
Phase 1: ████░░░░░░░░░░░░░░ (22% - Foundation)
Phase 2: ███████░░░░░░░░░░░░ (30% - UI Core)
Phase 3: ██████░░░░░░░░░░░░░ (28% - Analytics + Polish)
Phase 4: ████░░░░░░░░░░░░░░░ (20% - QA + Release)
Success Criteria (Definition of Done)
- All 12 steps implemented
- All 5 dashboard API endpoints wired and tested
- Pilot-only home working; non-pilots see original disclaimer
- Active jobs panel scrollable, clickable, color-coded
- Charts render with date range control
- Performance indicators show correct thresholds
- i18n works for EN, PT, ES
- No console errors or warnings
- Performance audit completed and documented
- Mobile responsive (320px to 1920px)
- Cross-browser tested (Chrome, Safari, Firefox, Edge)
- All 4 PRs merged and passed review
- Release notes and user guide complete
Contingency Buffer
- Unplanned blockers: +2 days
- Backend integration issues: +1-2 days
- UX revisions: +1-2 days
Total realistic completion: 26-32 working days (5-6.5 weeks)
Notes
- Mock Data: Use throughout Phase 2-3 to avoid backend dependency blocking UI work.
- Commit Frequency: Daily commits, PR every 1-2 days.
- Testing: Continuous throughout all phases, not batched at end.
- Documentation: Update README and include known limitations.
- Accessibility: Test with keyboard nav, screen reader, high contrast mode.
- Performance: Keep watch on bundle size; lazy-load charts if needed.
Generated: April 28, 2026
Last Updated: April 28, 2026