An Assets panel in the editor that reads the same catalogue as the website and drops an asset onto the canvas as a new layer. This is the feature that makes the marketplace worth having.
What to build
- Search and filtering with thumbnails, mirroring the site page.
- Insert as a layer, reusing
addImageLayer in src/store/document-store.ts - the drag-and-drop path already uses it.
- An on-disk cache so a downloaded asset is never fetched twice, and the panel degrades to cached assets when offline.
- SVG and Lottie need a decision: rasterise on insert at document resolution, or keep a live layer type. Rasterising is the smaller first step.
The constraint that matters
Photovibe's promise is that it works offline and sends nothing anywhere. This is the first feature that talks to a server, so it must:
- be explicitly opt-in,
- never block startup,
- fail silently when offline rather than showing an error,
- send nothing about the user or their document,
- make no network request at all until the user opens the panel.
Worth stating plainly in the UI and in the privacy section of the site.
Done when
- Assets can be found, previewed, inserted and undone.
- With the network off, the panel shows cached assets and no error dialog.
- No network request is made until the panel is opened.
Depends on
#25 - the R2 catalogue and /marketplace page.
An Assets panel in the editor that reads the same catalogue as the website and drops an asset onto the canvas as a new layer. This is the feature that makes the marketplace worth having.
What to build
addImageLayerinsrc/store/document-store.ts- the drag-and-drop path already uses it.The constraint that matters
Photovibe's promise is that it works offline and sends nothing anywhere. This is the first feature that talks to a server, so it must:
Worth stating plainly in the UI and in the privacy section of the site.
Done when
Depends on
#25 - the R2 catalogue and
/marketplacepage.