Sunset Media Wave is a high school art collective in San Francisco's Outer Sunset, a few blocks from the Pacific. It runs as a Bay Area Community Resources program out of the Sunset Neighborhood Beacon Center, funded by the SF Department of Children, Youth and Their Families, the California Arts Council, and private donations.
Teenagers make things there - painting, filmmaking, digital art, music production, poetry, collage, screen printing - and the work gets published two ways: online, and in three zines a year that the members print and bind themselves. The stated motto is "making the impossible possible." The operating principle is that teen voices should be amplified rather than curated into something more comfortable.
The website is not a brochure for that program. It is the program's public output - the place where eleven years of student work lives.
The site had been running since September 2013 on a purchased WordPress magazine theme, with the usual accretion around it: a commercial slider plugin, a like-button plugin, a recent-posts widget, Jetpack. Nothing unusual, and nothing wrong with any of it in 2013. The problem was 2024.
A theme you bought once and a plugin that stopped shipping updates are not a technology problem at first. They are a technology problem the day a PHP version moves, or a security advisory lands, or the theme author disappears and the layout you depend on stops rendering on new phones. For a nonprofit with no developer on staff and no budget line for one, that day is an emergency with nobody to call.
What made it worth doing was the archive. Not a marketing site with a blog attached - 1,570 posts and 7,738 media files, essays and photo sets and short films and audio, made by high schoolers going back to the first post on 23 September 2013. Some of those students are in their late twenties now. A migration that silently drops the 2016 photography or 404s every link a former member ever shared is not a migration. It is a deletion with a redesign attached.
Get off the dead stack, keep every single thing eleven cohorts of teenagers ever published, and hand back something the staff can run without me.
The order of operations matters more than any individual step. Content integrity first, then infrastructure, then design - because a redesign layered on top of an unverified content move is how you find out in month three that a year of posts lost their featured images.
The single most useful decision was treating the old database as the specification. Every question about scope - do we keep this, does this redirect, is this section worth rebuilding - had an answer already sitting in the data, which meant the volunteers and staff never had to adjudicate a thousand small calls they had no basis to make.
The design job was mostly restraint. When the content is teenage art - saturated, loud, unresolved, occasionally very good - the site's job is to be a frame, not a competitor. So: black and white, a heavy condensed display face, generous space, and let the work supply every bit of colour on the page.
Two audiences use it. Students and alumni looking for their own work and their friends'. And adults - parents, funders at DCYF and the Arts Council, prospective members' families - deciding within about ten seconds whether this program is real. Both are served by the same thing: put the work first, on the homepage, at full bleed, above any explanation of what the program is.


No invoice was sent for any part of this - discovery, design, build, migration, hosting setup or handover. That was the arrangement from the first conversation, not a discount negotiated later.
The reasoning is not complicated. Sunset Media Wave is funded by a city department and an arts council, which means every dollar it spends on a website is a dollar not spent on screen-printing supplies, camera gear, zine printing, or the staff who keep the room open after school. The work needed doing, and the cost of it landing on this particular budget was out of proportion to what it takes to do.
There is also a version of this that is just honest: a decade of teenagers' work was sitting on infrastructure that was one PHP upgrade away from being unreachable, and I knew how to move it. That is a bad reason to send an invoice and a good reason to spend some weekends.
Migrations are judged on what survives, not on what launches. The redesign was the visible part and the least of it - the actual deliverable was that a search for a student's 2015 photo essay still lands on the page it always did.