sdp-request-watcher/docs/ROADMAP.md
Skylar Grant 0d0bf2b033
All checks were successful
Build and push image / build (push) Successful in 15s
Raise contrast and switch the accents to MCCS colors
Feedback asked for higher contrast. Every color is now a token in
:root, with text checked for WCAG AA: faint text goes from 2.9:1 to
6:1 and muted from 7:1 to 9:1. The heat scale gets its own stronger
color with a 25% floor so a one-ticket cell is visible, and nothing is
smaller than 12px except the feed's "ago" label.

The accent changes from orange to MCCS green and the heat scale to MCCS
navy, both lifted from the colors sampled from the ITS logo, with a
green stripe under the header. Errors stay red-orange.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:00:38 -04:00

5.0 KiB
Raw Blame History

Roadmap

Goal

A hosted dashboard for MCCS help desk staff. Everyone signs in with their own Zoho account and sees the queue for their region. Each browser can be customised, and new panels are easy to add.

Current architecture

  • Hosting: Docker image on a VPS behind Nginx Proxy Manager, which only lets in MCCS' public IP blocks. The image is built by Gitea Actions; the container is restarted by hand.
  • Identity and data: each user signs in with their own Zoho account (web OAuth, Server-based Application client), and every SDP query runs with that user's token. What a user sees is limited by their own SDP permissions and then by the region filter.
  • Sessions: the Zoho tokens live in an encrypted, HttpOnly cookie. The server stores no sessions, so restarts and upgrades don't sign anyone out. Its only state is saved settings and name suggestions.
  • Polling: the browser runs the checks (closed feed every minute, status table at the user's interval) and keeps the closed feed. The server answers each call with the caller's token and their saved settings. Weather (per location) and name suggestions are shared.
  • Region and settings: .env sets the defaults (SITE_NAMES, GROUP_NAMES, TECHNICIAN_NAMES, WORKLOAD_MINUTES, OWM_ZIP_CODE). Each user can override sites, groups, technicians, timing, weather location and hidden panels/columns in Settings; these are saved on the server by Zoho email in DATA_DIR (a Docker volume). The status lists stay in .env for everyone, except which statuses the closed feed and ding watch, which each user can change.

Next

  • Finish checking the rebuild live. Done on 2026-10-15 with a bare-metal test run behind dash-test: Zoho sign-in, live SDP data, Sign out, and the NPM access list (403 from mobile data). Still to check: the token renews after an hour without a sign-in prompt, and the first v*-prod* image builds, starts healthy and serves the production subdomain.
  • Per-user settings: finish live checks. Built on 2026-10-15 (branch v2.1.0), tested with stubs only. Check against real SDP: the name suggestions query, the setup prompt on first sign-in, and the sdp-data volume surviving docker compose pull && up -d. Fill in campus satellites in src/places.js.
  • Technician check at sign-in. Replace or back up ALLOWED_EMAIL_DOMAINS by asking SDP whether the user is a technician. Find the scope this needs (users/technicians read); adding it means everyone signs in again. It would also allow real pick lists for technicians.
  • Theme picker, only if still wanted. v2.2.0 made the dark theme higher contrast and MCCS colored. If people still ask, add Dark / Light / High contrast, per browser, starting from the OS preference (see NOTES.md).
  • Panel modules: each panel has a server route to fetch its data and page code to draw it. The weather card is the model.
  • Status table width: it scrolls sideways once there are more statuses than fit (see NOTES.md).

Open questions

  • Does SDP restrict technicians to certain sites? With per-user tokens, that decides whether someone in another region sees their region's tickets or nothing.
  • How many dashboards will be open at once? Each one polls SDP with its own token, so check the SDP API rate limits if wallboards multiply.

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).
  • Server-based auth rebuild (2026-10-15): per-user Zoho web sign-in, sessions in an encrypted browser cookie, a stateless server, and the browser running the checks. This replaced the shared device-code token, the ADMIN_KEY and data/token.json from the short-lived phase 1.
  • Docker image v0idf1sh/sdp-dashboard, an example docker-compose.yml, and a Gitea Actions build on v*-prod* tags.
  • Live test on 2026-10-15: per-user sign-in, data, Sign out and the IP access list all work behind NPM.
  • Per-user settings (2026-10-15, v2.1.0): ⚙ Settings and a first-visit setup prompt; sites, groups, technicians with suggestions from recent SDP tickets; table refresh and feed length; weather location from a campus list; hidden panels and status columns. Saved server side by Zoho email, so they follow the user between browsers.
  • Per-user closed statuses for the feed and ding (2026-10-19, v2.1.1), so Resolved can ding without waiting days for SDP's automatic close. Tested with stubs only; check against real SDP that resolved tickets carry resolved_time and that the later automatic close doesn't ding again.
  • Contrast pass and MCCS colors (2026-10-19, v2.2.0): WCAG AA text, stronger heat scale, 12px minimum text, MCCS green accent and navy heat, all colors as tokens.
  • Sortable technician table (2026-10-19, v2.1.1): click any header to sort, again to reverse. Defaults to name A to Z; remembered per browser.