# Terra-View Roadmap Living document — captures known deferred work, in-flight initiatives, and longer-term ideas. Bump items up/down or strike them through as priorities shift. Source of truth for "what's next" should be this file plus the `## Current Development Focus` block in `CLAUDE.md`. Last updated: 2026-06-05 (Terra-View v0.13.3) --- ## In Flight Work that's started or has obvious next steps in the code. - **SFM Integration Phase 2 — device control** — expose `/device/*` (start, stop, erase, push-config) through the Terra-View proxy. Blocked on SFM growing an auth layer; placeholder TODOs already in `backend/services/device_controller.py` (lines 73, 109, 207, 282, 582). - **Calibration sync from SFM events** — done in v0.13.x. Daily 03:15 job + Settings "Sync now" button. Future: surface "last sync" timestamp on unit detail; per-unit "sync this one" action. - **Synology NAS deployment** — doc lives at `docs/SYNOLOGY_DEPLOYMENT.md`. Need to actually deploy + write up what tripped us up vs. the doc's expectations. ## Near-Term Concrete things scoped but not started. - **Migrate GPS coord parse in `photos.py`** — currently writes to dead `RosterUnit.coordinates` field. Should write to the active `MonitoringLocation` instead (matches the location-as-truth refactor done elsewhere). Helper: `backend/services/unit_location.py`. - **Phase 3 — drag-to-resize deployment bars** on the fleet-wide deployment-history Gantt (`/tools/deployment-history`). Phase 2 (the calendar + Gantt tabs) shipped in v0.12.0. - **Phase 5c — swap-detection daily job** — placeholder card already in `templates/tools.html:162`. Auto-detects unit swaps in the field (BE12345 → BE67890 at the same project+location) from operator-typed metadata. Pairs with a notification inbox. - **Geocoding for address strings** — TODO in `templates/dashboard.html:913`. Lets locations without explicit coordinates still appear on maps. - **ModemManager backend** — `backend/routers/modem_dashboard.py:279` has a TODO for querying a real modem backend. Currently the modem dashboard is mostly read-only metadata. ## Medium-Term Bigger features, sketched but not designed in detail. - **Alerting** — email/SMS for missing units, calibration-expiring-soon, sync failures. README's "Future Enhancements" has had this for a while; would pair well with the existing `UserPreferences` thresholds. - **Multi-user auth** — currently single-tenant, no login. Probably the prerequisite for any cloud-hosted multi-customer deployment. - **Notification inbox** — central place for swap-detection alerts, sync errors, calibration warnings, FT-flag review queue, etc. - **Audit log UI** — `UnitHistory` already records everything; expose a filterable view. ## Long-Term / Wishlist Speculative. Promote up the list once there's a concrete need. - PostgreSQL backend for larger deployments (SQLite is fine for now) - Advanced filtering / saved searches on roster + events - Export roster in additional formats (XLSX, GeoJSON) - Public-facing project status pages (read-only, share-link gated) - SLM module parity with seismographs — modal-based event/measurement detail similar to SFM modal - Weather station / accelerometer / GPS tracker modules (new device-type modules following the SLMM pattern — see `CLAUDE.md` → "Adding a New Device Type Module") ## Done / Reference For shipped items, see `CHANGELOG.md`. For architecture decisions, see `CLAUDE.md`.