Skip to content

Publish an asset catalogue on R2 and a /marketplace page #25

Description

@dariomory

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions