Project Overview: artist-landing


I committed to Astro SSR on Cloudflare Workers as the baseline for artist-landing, with the project now focused on expanding content and keeping the API reusable rather than revisiting framework choices.

What We Built

  • A server-rendered artist site in Astro, deployed through Workers, with a clear split between content (src/content/releases/*.md) and site/profile data (src/data/site.ts).
  • A JSON API surface for releases, mixes, and tracks (/api/releases, /api/mixes, /api/tracks) with cursor/limit pagination and lightweight hypermedia links.
  • A deliberate API boundary where tracks represent released discography only, not mix setlist entries (1bc280b).
  • Ongoing content and presentation refinement, including homepage numbering/copy cleanup for mixes (da46818) and release metadata updates (e63589a).
  • Project guidance and memory capture in-repo (AGENTS.md, MEMORY.md) so design and product decisions stay consistent across sessions.

Why We Built It

  • I moved to SSR because the earlier worker-first + SPA glue path was considered brittle, and the user explicitly wanted true server rendering.
  • I kept the API reusable and predictable because recent sessions centered on whether the JSON shape is good enough to power more than one consumer.
  • I protected scope in the tracks API to prevent semantic drift: released songs stay separate from DJ mix setlists.
  • I treated visual tweaks as product decisions, not cosmetic churn; session feedback on ordering, copy clarity, and typography density directly drove recent changes.
  • I preserved lightweight operations (dev, build, deploy) to keep iteration fast without introducing additional service infrastructure.

How It Works

  • Local loop is simple: astro dev for development, astro check && astro build for validation/build, astro preview for production preview, and wrangler deploy via npm run deploy.
  • Content is schema-driven through Astro content collections (src/content/config.ts) and rendered at page routes (/, /releases/[slug], /mixes/[slug]).
  • API routes expose list/detail endpoints with pagination defaults and filter params (?limit, ?cursor, and release-scoped filtering on tracks).
  • The current project memory captures stable UX constraints: left-column releases, right-column artist/profile panel, minimal mix cards, and no clone-like motif features (for example, no marquee/ticker).
  • Recent commits show the implementation trend: stabilize API behavior (6a5a5b9, 1bc280b, ecd9bdc) while tightening content and presentation details (da46818, e63589a).