# Frame Processor Self-hosted ASP.NET Core (.NET 10) service that dithers and color-remaps images for Spectra 6 e-ink frames, persists the result to disk, and notifies the frame via MQTT. ## Documentation - [`SPEC.md`](SPEC.md) — authoritative behavior contract. - [`PLAN.md`](PLAN.md) — implementation design and verification checklist. - [`CLAUDE.md`](CLAUDE.md) — load-bearing conventions and working notes. ## Quick start ```sh docker compose up --build ``` Brings up `frame-processor` on `:8080` plus a `mosquitto` broker on `:1883`. ## Smoke tests ```sh # Health (also reports MQTT connection state) curl http://localhost:8080/health # Upload a file curl -H "X-Api-Key: change-me" \ -F "image=@photo.jpg" \ http://localhost:8080/api/frames/living-room/image # Upload via URL curl -H "X-Api-Key: change-me" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com/photo.jpg"}' \ http://localhost:8080/api/frames/living-room/image-url # Fetch the processed PNG (the frame does this on MQTT signal) curl http://localhost:8080/i/aabbccddeeff.png > out.png # Watch MQTT publishes mosquitto_sub -t 'frames/#' -v ``` Configure frames in [`frames.json`](frames.json); service settings in [`appsettings.json`](appsettings.json) (or via `Mqtt__Host`-style env vars).