feat(site): WP-19 catalog site — read-only product page over the indexer API - #27
Merged
Merged
Conversation
cursor
Bot
force-pushed
the
cursor/wp-19-catalog-site-0b31
branch
from
September 14, 2026 15:46
305feb4 to
32cb6ce
Compare
jefflau
marked this pull request as ready for review
September 14, 2026 16:44
Vite + React + TS static app under apps/site reading the indexer JSON API (MVP.md §4.3). Adds the typed data layer (HttpIndexClient / FixtureIndexClient), config from VITE_* env only, shared primitives (Hash, CopyButton, Badge, states, Layout), design tokens, recorded fixtures and route stubs for the pages. Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Model page renders the trust chain (ENS name -> CID -> manifest -> bytes -> per-file SHA-256), a sortable files table, versions and a get-it panel with the lockfile entry. Home has live stats, how-it-works and a searchable list. Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Files table stacks under 720px, trust chain and attestation values wrap, lockfile entry collapses by default, hero and stats stay on the unfiltered catalog, shared code-block chrome, primary CTA, per-route document titles. Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
Co-authored-by: Jeff Lau <jefflau@users.noreply.github.com>
cursor
Bot
force-pushed
the
cursor/wp-19-catalog-site-0b31
branch
from
September 14, 2026 16:48
4e95f9c to
51c3184
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
apps/site(@enspack/site): a static Vite + React catalog site that renders the indexer JSON API (MVP.md §4.3) so a visitor can see what an enspack name is, what it points at, and that it verifies — without installing the CLI. This is MVP criterion 7 / WP-19 (already added toMVP.mdonmasterin 36c1a90). Decision record and build spec live in the Project store (docs/catalog-site-decision.md,docs/catalog-site-spec.md).SPEC.mdandschema/*untouched.Pages:
/— hero with copyableenspack get …, live stats, how-it-works (Name → Manifest → Bytes → Verify), searchable model list with publisher filter and cursor pagination. Hero and stats stay on the unfiltered catalog./name/:name— the selling page: trust chain (ENS name → contenthash CID → manifest → infohash/magnet/webseeds → per-file SHA-256), sortable files table with full hashes + copy (stacks under 720px), versions, and a "Get it" panel with theenspack.lockentry per SPEC §9 (collapsed by default)./publisher/:label— HF proof + registrar attestation (GET /v1/publishers/:label) as key/value with explorer links; explicit "no attestation" state formirrors.enspack.eth/ self-owned names./violations— SPEC §6.2 audit surface with an informative empty state./get-started— quickstart, publish flow, registrar CTA.Data layer:
HttpIndexClient/FixtureIndexClient; config fromVITE_INDEX_URL,VITE_REGISTRAR_URL,VITE_CHAIN,VITE_DATA_SOURCE=http|demo. No wallet, no writes, no RPC URL or keys in the bundle;@enspack/coreis type-only.Indexer:
hono/corsonGET /v1/*so the browser can callindex.enspack.devfromenspack.dev.Verification
pnpm checkgreen across all 12 workspace projects; CI green on4e95f9c.VITE_DATA_SOURCE=demomode.enspack_catalog_site_demo_home_model_trust_chain_publisher_violations.mp4
Not in this PR
enspack.devDNS (manual; seeapps/site/README.md).To show artifacts inline, enable in settings.