Skip to content

v1.1 phase 1: static next.js showcase frontend - #17

Merged
erick-ti merged 3 commits into
mainfrom
feat-v1.1-phase1-frontend
May 30, 2026
Merged

v1.1 phase 1: static next.js showcase frontend#17
erick-ti merged 3 commits into
mainfrom
feat-v1.1-phase1-frontend

Conversation

@erick-ti

Copy link
Copy Markdown
Owner

Phase 1 of the v1.1 showcase: the static Next.js app that renders the frozen seed exports from PR #16, with no live backend (output: export). Next 16 App Router + Tailwind v4 + hand-authored shadcn-style primitives; a seed gallery and per-seed results view whose cards carry the Deezer track-page link, source chips, CLAP-reranked badge, per-row rationale, and an expandable four-axis score breakdown that renders each score with its real semantics (raw cosine for audio/vibe, [0,1] within-batch for combined, unbounded RRF for cultural) instead of a misleading uniform percentage. It also anchors the root .gitignore python lib/ rule so web/lib (the score model + loader) isn't silently ignored, and marks Phase 0 shipped in the roadmap. next build + tsc + eslint all green; 12 static routes.

erick-ti added 3 commits May 29, 2026 21:17
The Python distribution-packaging block's bare lib/ (and lib64/) matched the JS app's web/lib dir at any depth, silently excluding web/lib/{scores,seeds,utils}.ts from version control. Anchor both to the repo root; no root-level lib/ exists, so nothing else changes.
Next.js 16 (App Router) + TypeScript + Tailwind v4 + hand-authored shadcn-style
primitives. output: "export" => a fully static site with no server runtime: it
renders only the committed web/public/seeds/*.json (DECISIONS.md 2026-05-29 —
static-precompute), never the live backend.

- seed gallery (8 genre heroes + 2 vibe-steered variants) and per-seed results view
- result cards: rank, Deezer track-PAGE link (invariant #2), source chips +
  high-consensus, CLAP-reranked badge, per-row rationale, expandable score breakdown,
  view-raw-JSON dialog
- four-axis score breakdown with correct, distinct per-axis semantics (raw cosine +
  fixed band for audio/vibe, [0,1] within-batch for combined, unbounded RRF for cultural)
- static coverage funnel + system-transparency/provenance panel
- types/recommendation.ts mirrors api/schemas.py + the export-only coverage/meta keys;
  every nullable field guarded
@erick-ti
erick-ti merged commit 1798a8b into main May 30, 2026
9 checks passed
@erick-ti
erick-ti deleted the feat-v1.1-phase1-frontend branch May 30, 2026 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant