← /journal

June 2, 2026 · 4 min

Relaunching AntiPretty from zero, not WordPress

Fifteen years of galleries on the old stack — we rewrote in two days on Payload instead of theme-hacking forward.

AntiPretty had been live since 2015. WordPress, custom theme, portfolios, editorial cadence, the whole “We Like Them Weird” posture baked into years of shoots. It worked. It also accumulated — plugins, hosting quirks, the mental tax of opening wp-admin when you only wanted to fix one gallery grid.

We didn’t iterate the theme forward. We scrapped to a blank Payload template and started counting hours.

May 31 → June 1

Day zero: Next 16, Postgres through Supabase’s transaction pooler, Concept-B landing, Netlify pinned to webpack reality like every other project lately. Bunny for media — infra proved before we pretended admin uploads were done.

Day one: Content model — Series, People, Tags. Importers. Twenty-nine WordPress galleries, 1,247 photos, resumable fetch with timeouts because migration scripts always lie about being finished. Real copy backfilled for dozens of recovered archives — not lorem, the actual weird captions.

Day two: Members, auth, profile editor, claim flows. Follows, DMs, read receipts. Casting calls. Miss AntiPretty contest entries. SEO JSON-LD and canonicals because relaunch isn’t an excuse to lose URLs.

That’s not a roadmap fantasy. That’s the git log.

Why not “just upgrade WordPress”

Because the goal wasn’t a fresher admin skin. It was ownership — typed collections, Bunny CDN URLs we control, social features WordPress would’ve meant another plugin stack for. Every hour theme-hacking is an hour not shipping DMs or contest voting.

We kept the brand voice. We kept the photos. We didn’t keep the PHP.

What broke our brains

Serverless Postgres pools capped at one connection — fine until it isn’t. Sharp on Linux x64 for Netlify — a recurring tax. Import jobs that need retry and honest logging when a gallery fetch stalls mid-batch. Soft photo filters and archive regrouping by EXIF because “undated” buckets are where content goes to die.

Deploy stays manual. This site doesn’t need to burn Netlify minutes every time we tweak copy.

What’s still open

Editorial rhythm finding its legs on the new stack — same as FuhNNY after Webflow. The engineering isn’t waiting for perfect manifestos. Galleries ship while the voice catches up.


Fifteen years of content doesn’t owe WordPress another plugin — sometimes it owes you a blank repo and a long import weekend.