Web & Infrastructure Migration / Youth Arts Nonprofit

Sunset
Media Wave

Sunset Media Wave 2024 - 2025 Pro bono sunsetmediawave.org ↗
Sunset Media Wave website homepage
1,570 Student posts migrated, no broken URLs
7,738 Media files rehoused
2013 Earliest post preserved - every year since
$0 Invoiced. Donated end to end
01 — The Context

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.

02 — What Was At Risk

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.

The brief, stated honestly

Get off the dead stack, keep every single thing eleven cohorts of teenagers ever published, and hand back something the staff can run without us.

03 — The Migration

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.

  1. Inventory before anything moves. A full crawl and a database-level count of what existed: posts, pages, attachments, the taxonomy, the comment thread. That count became the acceptance test. If the new site didn't match the old numbers exactly, the migration wasn't done.
  2. URL preservation as a hard constraint. Every permalink from the old site resolves on the new one. Where structure had to change, it changed behind a 301. Student work gets shared in college applications, in portfolios, in group chats years after it was posted; those links had to keep working, and they do.
  3. Media rehoused and reprocessed. Nearly eight thousand files moved, re-derived at modern sizes and formats, and re-attached to their posts. This is the step that quietly fails on most migrations, because it fails invisibly - the post is there, the image isn't, and nobody notices for a year.
  4. Taxonomy triage. A decade of open tagging had produced 4,648 tags and 261 categories - the natural result of every cohort inventing its own vocabulary. Rather than flatten it, the browse structure was rebuilt around the seven sections that carry the work: Art, Fashion, Food, Music, Photography, Writing, Video. The long tail stayed in place for search and for anyone digging.
  5. New platform, deliberately boring. WordPress with a maintained base theme and a supported page-builder stack, served over nginx with a cache layer in front. Nothing bespoke, nothing clever, nothing that depends on us still answering emails in three years.
  6. Verification pass. Counts reconciled, old permalinks spot-checked in bulk, attachments confirmed against their parents, feeds and search re-indexed. Then the DNS cutover, not before.

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.

04 — The Rebuild

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.

05 — Why It Was Free

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 we knew how to move it. That is a bad reason to send an invoice and a good reason to spend some weekends.

Looking back

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.

WordPress Content Migration Information Architecture UI / UX Design PHP nginx Redirect Mapping Media Pipeline Web Performance Accessibility (WCAG) Documentation & Handover