Roadmap
Milestones
| Milestone | Sprint | Exit Criteria |
|---|---|---|
| M0: Rails | Sprint 0 | Three repos bootstrapped, CI green, Sanctum login works, a seeded SuperAdmin can log in to web + mobile and hit /me. |
| M1: Foundation CRUDs | Sprint 1–2 | Organizations / units / employees fully manageable via API, web, and Filament. |
| M2: Shifts & Roster | Sprint 2–3 | ShiftManager can draft, publish, and edit a monthly roster. Conflict detection works. |
| M3: Attendance core | Sprint 3–4 | Employee can check-in/out from web. Processor generates attendance rows and red flags. |
| M4: Approvals | Sprint 4–5 | Leave + regularization flow (including recalculation) usable end-to-end. |
| M5: Locum + Locking | Sprint 5–6 | Locum replacement and lock/unlock cycle working. |
| M6: Reports + Payroll | Sprint 6–7 | CSV/XLSX export and payroll push endpoint live. |
| M7: Mobile MVP | Sprint 7–8 | Flutter app shipped to internal testers via TestFlight + Play Internal. |
| M8: Pilot | Sprint 8–9 | First paying client's pilot unit running on the system. |
| M9: V1 GA | Sprint 10 | Security pass + load test + production release. |
| M10: V1.1 kick-off | Sprint 11 | Telegram + geo + device hardening under way. |
Gantt (approximate)
gantt
title Attendance System — V1 & V1.1
dateFormat YYYY-MM-DD
axisFormat %b %d
section V1
M0 Rails :done, m0, 2026-05-04, 1w
M1 Foundations :m1, after m0, 2w
M2 Shifts/Roster :m2, after m1, 2w
M3 Attendance core :m3, after m2, 2w
M4 Approvals :m4, after m3, 2w
M5 Locum/Locking :m5, after m4, 1.5w
M6 Reports/Payroll :m6, after m5, 1w
M7 Mobile MVP :m7, after m3, 2w
M8 Pilot :m8, after m6, 1w
M9 V1 GA :m9, after m8, 1w
section V1.1
M10 Telegram :2026-08-24, 1.5w
Geo hardening :after M10 Telegram, 1w
Device binding :1w
Integrations :1w
Notifications :1w
Load test / Rollout :0.5w
Dependency Map
M0 ──► M1 ──► M2 ──► M3 ──► M4 ──► M5 ──► M6 ──► M8 ──► M9
└─────► M7 ─────────────────┘