Skip to content

Community uploads, curation, and eventually paid assets #27

Description

@dariomory

Uploads, moderation and payments are separable to build but not separable to design: what you accept on day one determines whether you can ever sell it. This issue is for settling that, then splitting into implementation issues.

No implementation should start from this issue directly.

Phase A - uploads, free and open

  • Sign-in, upload to R2 through a Worker that validates type and size, with the uploader asserting a licence.
  • Everything lands in a queue, never straight into the catalogue.
  • Rate limits and a maximum file size from the first commit.

Phase B - curation

  • An approval queue. An open bucket attracts junk and worse; assume it will be abused and design for takedown from the start.
  • Automated checks first: file type sniffing, dimension and size limits, SVG sanitisation.
  • SVG is an XSS vector. Never render an uploaded SVG on the site without stripping scripts and external references.
  • A reporting route and a documented takedown process.

Phase C - paid assets, only if the free tier gets traction

  • Payments, payouts to creators, refunds, and the tax treatment of selling on someone else's behalf. This is the part that turns a side project into an obligation.
  • Licence enforcement in an MIT-licensed, offline-capable app is weak by construction - anyone can build from source. Price accordingly, or sell convenience rather than access.

Open questions to answer before any code

  • Who is legally publishing user uploads, and under whose terms?
  • What is the takedown SLA, and who is on the hook for it?
  • Does a paid tier fit a project whose pitch is "free, open source, no account"?

Depends on

#25 and #26 - the R2 catalogue and the in-app asset browser.

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 requestquestionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions