Skip to content

Epic: in-app QtMesh Cloud marketplace — browse, download, import, publish #934

Description

@fernandotonon

Goal

Integrate the QtMesh Cloud asset marketplace (qtmesh-cloud#106, live at https://qtmesh.dev/marketplace) directly into QtMeshEditor: browse and search assets, download and import them into the open scene, and publish work back to the marketplace — without leaving the editor.

Why

  • The marketplace's registration incentive (login-gated downloads) becomes an editor-native flow: the editor is already authenticated via the device OAuth connect flow.
  • Assets carry real technical metadata the editor understands (formats, quality grade/score from QtMesh scans) — an in-app browser can filter on what actually matters.
  • Publishing from the editor closes the loop: model → validate → list, one tool.

Existing cloud API surface (all live)

  • GET /v1/marketplace/listings — browse JSON: ?category=, ?q=, pagination; returns official, formats, hasThumbnail, categories
  • GET /v1/marketplace/listings/:owner/:slug — detail incl. files + quality (grade/score/ratings from the source project's published scan)
  • GET /v1/marketplace/listings/:owner/:slug/thumbnail — preview image (public for published)
  • GET /v1/marketplace/listings/:owner/:slug/download/:fileId — login-gated download (Bearer token)
  • POST /v1/marketplace/listings (+ 3-step file upload, POST :id/publish, POST :id/thumbnail) — create/publish/thumbnail
  • Device OAuth: the editor's existing connect flow provides the Bearer token

Tracks

A — Marketplace browser (read side)

  • Dockable "Asset Library" panel: thumbnail grid, category chips, search box (debounced), curated badge, license + format chips
  • Detail view: description, files, license (attribution notice for CC-BY), quality grade/score when present
  • Download + import: fetch via authenticated download endpoint, drop into the current scene (reuse existing importers by extension); cache downloads under AppData with license/attribution sidecar
  • Anonymous browsing with a sign-in prompt on download (mirrors the web funnel)

B — Publish from the editor (write side)

C — Deep links & polish

  • Open in QtMeshEditor on the web listing pages (custom URL scheme or the existing launch flow), landing on the in-app detail view
  • Surface "QtMesh Certified" grade badges consistently with the web
  • Settings: cache size/location, default license for publishing

Non-goals (for this epic)

Payments, ratings/reviews, collections, in-app 3D preview streaming (download-then-preview is fine).

Dependencies

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions