Community-curated music playlists. Every song opens on YouTube, SoundCloud and Spotify — take whichever one you already pay for.
Static site. No framework, no build step, zero dependencies. Anyone can add a song or propose a playlist by pull request.
🎧 Browse it · 📋 Contribute · 🗺️ Roadmap
| Playlist | Songs | The house rule |
|---|---|---|
| The Hundred | 100 | One song per artist. No exceptions. |
| Small Hours | 25 | Nothing that would wake someone in the next room. |
| Full Tilt | 25 | If it doesn't raise your pulse in thirty seconds, it's out. |
| No Vocals | 25 | No lead vocal. Wordless voice as texture is allowed. |
175 songs · 165 artists · 14 genres · 1954–2024 · 525 platform links
Every entry carries a one-line note about the recording — an arrangement detail, a production fact, a piece of history. That note is the reason this exists rather than being a link dump.
"Not a bass guitar — a semi-acoustic through an octave pedal, and now a chant in every stadium on earth." — Seven Nation Army
"The orchestra was recorded, then the tape was bent out of tune — the strings slide because the machine did." — How to Disappear Completely
Search by title, artist, album or year; filter by genre and decade; sort any column. Filter state lives in the URL, so any view is a shareable link.
It's keyboard-first. Press ? for the full list:
| / | search |
| j k | move between songs |
| g G | first / last |
| ↵ | show the note |
| 1 2 3 | open on YouTube / SoundCloud / Spotify |
| [ ] | previous / next playlist |
| s | cycle sort column |
Every one of them also works by mouse, touch and Tab — the keys are a shortcut, never the only way in.
git clone https://github.com/THEROCKSSS/crate
cd crate
npm start # http://localhost:4173No install step — the project has no dependencies. You need Node 18+.
You do need the server: the page fetches its JSON, and browsers block fetch()
on file://. Opening index.html directly shows a load-failure message rather
than a blank page, but the catalogue won't load. (A single-file build you can
double-click is Phase 4a of the roadmap.)
Adding a song is one line in one JSON file. Proposing a playlist is one file. Full guide in CONTRIBUTING.md.
npm run new-playlist -- --id rainy-day --title "Rainy Day" --moods rainy-day,melancholy
npm run normalise # fixes punctuation for you
npm run verify # must end with "Catalogue is sound."Prefer not to touch git? Open an issue instead — suggest a song · propose a playlist · report a wrong entry.
The review is about accuracy, not taste. Nobody's song gets rejected for being uncool. Entries get rejected for being wrong — and for inventing a "fact" in a note, which is the one hard line.
Entries store facts, not platform IDs. Each platform URL is built at render time from the artist and title using that service's own search endpoint.
This is deliberate. Hard-coding hundreds of track IDs would mean writing IDs that were never verified against the real APIs, and a wrong Spotify ID doesn't 404 — it plays a different song, silently. A search link is always correct, survives regional catalogue differences, and keeps working when a track is re-released.
Verified IDs are welcome and the renderer already prefers them:
Full reasoning: ADR 0001. Resolving IDs at scale is Phase 1 of the roadmap — it unlocks in-page playback and one-click export to your own Spotify.
npm start # static server
npm run verify # catalogue + link integrity (what CI runs)
npm run lint:css # CSS token discipline
npm run normalise # smart-punctuation pass
npm run new-playlist # scaffold a new playlist
npm run changelog # regenerate CHANGELOG.md from git log
npm run check # syntax + verify + lint| File | What it owns |
|---|---|
| CONTRIBUTING.md | How to add a song or a playlist, and what gets merged |
| ROADMAP.md | Where this is going — Spotify export, in-page playback, offline builds |
| ARCHITECTURE.md | Data flow, file map, named pitfalls |
| AGENTS.md | Conventions, schema, verification checklist |
| design.md | The locked visual system and its design gates |
| CLAUDE.md | Local commands and machine-specific gotchas |
| docs/adr/ | Architecture decisions and why they were made |
| CHANGELOG.md | Generated from git history — do not hand-edit |
Checked, not assumed:
- 74/74 catalogue checks — per playlist: contiguous ranks, one song per artist, genres drawn from the shared vocabulary, no leftover scaffold placeholders, typographic punctuation, valid https links
- 2/2 CSS token gates — every spacing value on the 4px scale, every colour and font through a token
- 95/95 headless-browser checks — every keyboard shortcut, roving tabindex,
aria-sorton sorted columns, note disclosure viaaria-expanded, playlist switching, scoped filters, deep links, unknown-id fallback, keyboard-driven focus rings, WCAG AA contrast on every text element, table-vs-card mode, and no horizontal scroll at seven viewport widths
CI runs the first two on every pull request and refuses to deploy a failing catalogue.
MIT — see LICENSE. The catalogue is a list of facts about commercially released recordings. This project hosts no audio, embeds no files, and distributes no copyrighted recordings.
{"rank":1,"title":"Dreams","artist":"Fleetwood Mac","…":"…", "ids":{"spotify":"0ofHAoxe9vBkTCp2UQIavz"}}