First step towards an asset marketplace: a read-only, statically served catalogue. No accounts, no uploads, no backend.
Seed it with a small set of genuinely useful free assets and prove the shape end to end.
What to build
- An R2 bucket, public over a custom domain, holding asset files and their thumbnails.
- A versioned
index.json catalogue: id, name, kind, tags, licence, author, attribution, dimensions, byte size, checksum, and URLs for the file and its thumbnail.
/marketplace on the site - an Astro page in site/src/pages/ - with search, filtering by kind, and a page per asset. It reads the same index.json the app will later.
- Kinds supported from day one: PNG, SVG, GIF, Lottie, and brush presets once the brush rework defines a preset format.
Decisions to settle here, because they are painful to retrofit
- The licence field is mandatory and drawn from a fixed list (CC0, CC-BY, MIT and so on). An asset with no licence is not publishable.
- The catalogue schema is versioned from the first commit, so older app builds keep working against it.
- Thumbnails are generated at publish time, not by the client.
Done when
photovibe.mory.dev/marketplace lists the seed assets and each one downloads.
- The catalogue validates against a published JSON schema in CI.
- The page is indexable - it is a real SEO surface for searches like "free brushes" and "free overlays".
Leads to
#26 (in-app asset browser) and #27 (uploads and curation) both build on this catalogue.
Context
The Cloudflare account already uses R2 for several other projects, and the site already deploys to Cloudflare Pages from site/ via .github/workflows/site.yml, so the infrastructure is in place.
First step towards an asset marketplace: a read-only, statically served catalogue. No accounts, no uploads, no backend.
Seed it with a small set of genuinely useful free assets and prove the shape end to end.
What to build
index.jsoncatalogue: id, name, kind, tags, licence, author, attribution, dimensions, byte size, checksum, and URLs for the file and its thumbnail./marketplaceon the site - an Astro page insite/src/pages/- with search, filtering by kind, and a page per asset. It reads the sameindex.jsonthe app will later.Decisions to settle here, because they are painful to retrofit
Done when
photovibe.mory.dev/marketplacelists the seed assets and each one downloads.Leads to
#26 (in-app asset browser) and #27 (uploads and curation) both build on this catalogue.
Context
The Cloudflare account already uses R2 for several other projects, and the site already deploys to Cloudflare Pages from
site/via.github/workflows/site.yml, so the infrastructure is in place.