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.
This commit is contained in:
Timothy Hofland
2026-03-10 22:34:02 +01:00
parent 7928a2be9b
commit 158e6a204f
5 changed files with 144 additions and 0 deletions

View File

@ -0,0 +1,34 @@
# 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.