> music
// upload · shelve · words · moving picturesmp3 · m4a · aac · wav · flac · ogg — select several for an EP/album; track order follows filename (01…, 02…)
jpg · png — auto-rendered in the site's dither style
| # | title | artist | in | len | ops |
|---|
qr codes: each generates a public link ( /dl/<token> ) that downloads the original file. limit its downloads (1…n) or leave it infinite. the landing page never consumes a use — only the actual download does.
| # | title | type | tracks | ops |
|---|
deleting a release deletes its tracks and files. individual songs (edit / qr / delete) are managed in tracks_on_disk above.
| # | song | shelf | lines | ops |
|---|
mp4 · mov · m4v · webm · mkv — re-rendered at 480px, 216 colours, dithered
| # | title | status | len | ops |
|---|
after upload the video shows as processing… while the server re-renders it; the page checks back automatically until it's ready.
> admin
// inbox · newsletter · gigs · works · spotlight| from | reach | message | when | ops |
|---|
// [ open ] shows the whole message and marks it read · unread rows are bold
// subscribers: …
jpg · png — rendered in the site's dither style
// [ save + test ] (and [ test ] on any saved draft) mails ONLY the test address, subject marked [test] — the real [ send ] is untouched and the draft stays a draft
| # | subject | carries | status | ops |
|---|
// letters go out via brevo as news@ilanwoodward.com — one email per subscriber, each with its own unsubscribe link. [ send ] asks twice. a dropped photo only uploads when you hit [ save draft ] — check the "carries" column says photo before sending.
| subscriber | since | ops |
|---|
// this code takes the scanner straight to a signup-only page ( /newsletter ) — one code, reusable forever, no download attached
| date | time | venue | place | event | link | ops |
|---|
| page | title | link | ops |
|---|
// loading…
// placeholder = the meadow photo · spotlight = new_release! with artwork + a big play button (phones see it above the library)
