# Roadmap ## Goal A hosted dashboard where staff in each MCCS region sign in and see their own region's queue. It should be customisable per user, and easy to extend with new panels. ## Target architecture - **Identity:** users sign in (Zoho web OAuth, or Microsoft if MCCS staff use it) only to identify themselves. - **Data:** one service connection, signed in once by an admin, with its refresh token kept and auto-renewed. Its SDP account must be able to see every region. - **Regions:** profiles stored in SQLite (sites, groups, technicians, statuses). Checks run once per region and the results are cached, so API traffic grows with regions, not viewers. - **Access:** users are assigned to regions and the server enforces it. An admin role manages regions and assignments. - **Extensibility:** each panel is a module with server code to fetch its data and page code to draw it. The weather card is the first example. ## Phases Phases 2 to 5 (regions as configuration, user sign-in, admin pages, deployment) were dropped on 2026-10-15. Don't start them. The whole auth process is being rebuilt to run on a server instead of locally, and the plan after phase 1 will be redrawn around that. Until then, the Identity, Data and Access bullets in the target architecture above may be out of date. The open questions below still need answering. - [ ] **Later:** per-user preferences (default region, hidden columns, sound) and panel modules. ## Open questions - Are regions a **security boundary** (staff can't see other regions) or a **convenience** (default view with a switcher)? - Do MCCS staff sign in with Microsoft 365 or Entra ID? That decides between Zoho and Microsoft sign-in. - Does SDP itself restrict technicians to certain sites? If it does, per-user tokens become an option. ## Done - Dashboard: stat tiles, technician × status table, live closed feed with the ding. - Central region scoping by site and group. - Unassigned counter. Verified to match the ManageEngine "Central Region Unassigned" view on 2026-10-15. - Weather card (OpenWeatherMap). - Fixed SDP paging and the date filter (see `NOTES.md`). - Phase 1: the Zoho refresh token is kept, the access token is renewed 5 minutes before it expires, and the sign-in is saved to `data/token.json` (`TOKEN_FILE`) so it survives restarts. - Phase 1b: Connect and Refresh are admin-only (`ADMIN_KEY`, or localhost when no key is set), and only admins see the device code. Phase 3 replaces the key with real sign-in.