Files
mapper/openspec/changes/ofxpimapper-full-stack/specs/ofxpimapper-full-stack/spec.md
Timothy Hofland 158e6a204f feat: add ofxpimapper-full-stack OpenSpec artifacts
Comprehensive blueprint for a headless Raspberry Pi 3B projection mapping appliance:
- Unified installer with 2GB swap safety for C++ source builds.
- WebSocket-driven real-time vertex/surface manipulation.
- 5-tab responsive dashboard (Dashboard, Mapping, Media, Network, System).
- Media validation with ffprobe (H.264 check) and resource warnings.
- Throttled log streaming and explicit mapping persistence.
2026-03-10 22:34:02 +01:00

1.7 KiB

ofxpimapper-full-stack Spec

System Dashboard (Status Tab)

  • GIVEN the web UI is loaded
  • THEN it SHALL display real-time CPU Load, RAM Usage, and CPU Temperature.
  • AND it SHALL show the status of the ofxPiMapper process (Running/Stopped).
  • AND it SHALL provide "Restart Mapper", "Reboot Pi", and "Shutdown Pi" buttons.
  • AND it SHALL display the "Throttled Logs" (max 10 lines per 500ms) from the Mapper process.

Mapping Engine (Mapping Tab)

  • GIVEN the Virtual Canvas
  • WHEN a vertex is dragged in the UI
  • THEN it SHALL send an OSC message to localhost:9999 via WebSockets in < 50ms.
  • AND it SHALL support adding/deleting surfaces (Quad/Triangle).
  • AND it SHALL provide a prominent "Save Mapping" button to persist changes to disk.
  • AND clicking a surface in the UI SHALL send a highlight OSC command to the beamer.

Media Management (Media Tab)

  • GIVEN the Media Vault
  • WHEN a file is uploaded
  • THEN it SHALL be stored in /home/pi/media.
  • AND the backend SHALL validate that the file is H.264 and show a warning if resolution exceeds 1080p.
  • AND the user SHALL be able to assign any file to any named surface, with a "Resource Warning" if total pixel throughput is too high.

Networking (Network Tab)

  • GIVEN the Network settings
  • THEN the UI SHALL list available WiFi networks for client mode connection.
  • AND it SHALL allow changing the AP SSID and Password.
  • AND it SHALL display the current IP Address and Hostname (.local).

Hardware Constraints

  • Processor: Raspberry Pi 3B (ARMv8).
  • Memory: 1GB LPDDR2.
  • Resolution: Support up to 1080p hardware-accelerated H.264 video.