Summary
Add the ability to save and load projects, both on the user's local machine and on the Raspberry Pi (via the gateway daemon).
Motivation
Drawings are currently transient. Users need to persist a full project (canvas contents, pens, paper, layout) and reopen it later — including projects stored on the Pi so the headless deployment can hold a library of plots.
What a project includes
- All canvas objects (imported paths, shapes, text).
- Pen / multi-color assignments.
- Paper type and canvas layout/settings.
- Enough metadata to reproduce the plot.
Storage targets
- Local machine — download/open a project file from the browser.
- Raspberry Pi — save to / load from the gateway, so projects live on the Pi and are reachable from any client connected to it.
Acceptance criteria
Notes
- Define a versioned project file format so future schema changes stay compatible.
- Pi-side storage and listing will need new gateway endpoints (
gateway/server.ts); mirror the existing state-persistence patterns (PLOTTER_STATE).
Summary
Add the ability to save and load projects, both on the user's local machine and on the Raspberry Pi (via the gateway daemon).
Motivation
Drawings are currently transient. Users need to persist a full project (canvas contents, pens, paper, layout) and reopen it later — including projects stored on the Pi so the headless deployment can hold a library of plots.
What a project includes
Storage targets
Acceptance criteria
Notes
gateway/server.ts); mirror the existing state-persistence patterns (PLOTTER_STATE).