■ ■ ■ ilan_woodward — admin_console /library

> music

// upload · shelve · words · moving pictures
upload_new_track
drop audio here / click to browse
mp3 · m4a · aac · wav · flac · ogg — select several for an EP/album; track order follows filename (01…, 02…)
optional square artwork / click to browse
jpg · png — auto-rendered in the site's dither style
tracks_on_disk
#titleartistinlenops

order: the site lists newest first, automatically. the ↑↓ arrows appear only on songs inside an ep/album and move them along that tracklist.

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.

releases — eps & albums
#titletypetracksops

deleting a release deletes its tracks and files. individual songs (edit / qr / delete) are managed in tracks_on_disk above. newest release first, automatically.

lyrics — shown on the /lyrics page
#songshelflinesops
videos — music videos & live recordings, dithered on upload (this takes a few minutes)
drop a video here / click to browse
mp4 · mov · m4v · webm · mkv — re-rendered at 480px, 216 colours, dithered
#titlewherestatuslenops

after upload the video shows as processing… while the server re-renders it; the page checks back automatically until it's ready. live recordings appear on /live, newest gig first (by the gig date); the ↑↓ arrows order the music_videos shelf only.

> admin

// inbox · newsletter · subscribers · send to… · website qr · gigs · works · spotlight
inbox — messages from the contact page
fromreachmessagewhenops

// [ open ] shows the whole message and marks it read · unread rows are bold

newsletter — write, save, send

// subscribers: …

// subject = the inbox line · header = the big centered title inside the letter (empty = "newsletter")

// none scheduled
optional photograph / click to browse
jpg · png — rendered in the site's dither style

// leave the photo link empty and the photo points at the featured song's page instead (when one is picked below)

// a song, or a whole ep/album: the letter gets a [ ▶ ] listen line under the photo that plays it on the site, and the photo links there too when it has no link of its own

// [ 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

> send later

// saves the draft and books it: at that moment (eastern time — edt or est as the calendar says) it goes to the whole list, exactly like [ send ]. a booked row shows its time and a [ cancel ]; [ send ] on any row still means right now.

#subjectcarriesstatusops

// 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.

subscribers — the list the newsletter goes to
subscribersinceops
newsletter signup QR code

// this code takes the scanner straight to a signup-only page ( /newsletter ) — one code, reusable forever, no download attached

> email replies

// checking…

// to have replies to the newsletter land in the inbox panel, add these two records at namecheap (domain list → manage → advanced dns → mail settings: custom mx) — host reply, then press [ register with brevo ]. dns can take a few hours; [ check ] tells you when it's through.

hosttypepriorityvalue
replyMX10inbound1.sendinblue.com.
replyMX20inbound2.sendinblue.com.

// mx: …

// once registered: a subscriber pressing reply in their mail app lands in the inbox panel, tagged email (the letter's footer "reply" link goes to the contact form either way). letters sent to labels keep replying to your own mailbox.

send to… — labels & one-off addresses

// the real letter with its real subject (no [test]), to people outside the list: a label you're courting, a friend who missed it. the list is untouched, the letter's status stays as it is, and the footer reads sent to you directly instead of "unsubscribe".

> which letter

> addresses

// type an address and press enter (or [ + add ]) — as many as you like, each shows below before anything is sent. a list pasted in with commas or spaces is split up.

> labels

labeladdressnoteslast sentops

> sent directly

// nothing sent directly yet

website_qr — a code that lands on the library
website QR code
#madescanslast scanops

// every press makes a new code with its own address ( /q/<token> ). all of them land on the home page, scan forever, and count their scans here — so a card, a poster and a sticker can each have their own. deleting one stops the counting; printed copies still land home.

upcoming_gigs — shown on the library page
datetimevenueplaceeventlinkops
works_pages — other_works (+ sidelined: visuals_sound / written_work)
pagetitlelinkops
spotlight — the tile on the library page

// loading…

// placeholder = the meadow photo · spotlight = new_release! with artwork + a big play button (phones see it above the library)