It is now safe to let
the cat have the keyboard.
A luxury gin brand site built around Shag's signature mid-century palette and a hand-painted Palm Springs hero. Shopify Horizon, overlaid with a custom GSAP-driven homepage.
Shag Spirits — a collaboration between artist Josh Agle (Shag) and the City of Palm Springs — needed a launch site that felt as deliberate as a cocktail napkin from the Tropicale, not a templated DTC drop. The label art was already iconic; the web experience had to match it without leaning on it.
We started from Shopify's Horizon theme for commerce reliability, then overlaid a fully custom homepage gated behind template == 'index' in theme.liquid. The product detail page, cart, and account flows inherit Horizon defaults; the homepage is its own animated room.
102% innerHeight via JS and 100dvh CSS to eliminate the iOS toolbar gap; an absolutely-positioned cover image keeps the bottle in frame on every viewport.document.body to dodge Horizon's overflow clipping, then restores its inline style on close so the wall doesn't lose its place.The interesting fights weren't with GSAP — they were with Horizon's base.css. Every section had to be unwound from Horizon's default container, padding, and typography rules without breaking the inherited PDP. The fix was a per-element override sheet (shag-style.css) that scoped every reset to the homepage sections by ID, plus CSS custom properties (--ink, --cream, --gold, --purple, --orange) for the palette so future seasonal drops are one-token swaps.
Image weight on the launch hero set dropped from 13.4 MB to 3.1 MB across ten compressed JPGs — about a 77% reduction with no visible quality loss.
One push went out with a JSON comment block (/* … */) inside index.json while --allow-live was set. Shopify silently dropped every template on that theme. Recovery was a backup theme; the rule since: never JSON comments, never --allow-live on live, push to a test theme by ID and promote only after preview.
Site flow: Hero → Release II overlay → Artist → Gallery → Botanicals → Founders Letter → Buy (with PDP-style gallery + lightbox) → Footer. Shipped to shagspirits.com on Shopify, mobile-first, ecommerce-launch-ready. The bottle, the wall, the buy — everything pulled from the same visual language.
A gas station, liquor store, and mini mart on Birmingham Drive in Cardiff, CA — migrated off a slow WordPress build to a static Vercel site with a custom admin panel, live open/closed indicator, and 17 preserved legacy redirects.
The shop had a WordPress site that did what every neighborhood-business WordPress site does: it cost $40/mo to host, took eight seconds to load on 4G, and the staff had no practical way to update hours or specials. Goal: keep every URL Google had already indexed, kill the monthly bill, and give the owner a one-page admin to change open/closed messaging without me in the loop.
/admin page writes back to a JSON file via a Vercel Function. The owner edits open hours, holiday closures, and the rotating featured-item from his phone. No database, no plugins, no PHP./?page_id=42, archive paths, old blog posts) maps via vercel.json rewrites to its new home. No 404s for anyone Google has indexed.Pre-cutover audit: every URL, title, H1, and meta description from the WP build was captured into a spreadsheet, then re-implemented verbatim on the new site. The redirects are belt-and-suspenders for paths I couldn't keep identical (WP rewrites with stray query strings). Post-launch, GSC showed zero new 404s and stable impressions through the cutover.
Currently live at cardiff-valero.vercel.app; DNS cutover to the production domain is queued. Page weight cut ~85% from the WP version, Lighthouse mobile performance went from 31 to 98, and the owner edits hours from a Subway parking lot without calling me.
A five-location San Diego County restaurant chain ranking #3 nationally for "mexican food near me." Migrated off WordPress/Divi to a static Vercel build without losing 110,000 monthly organic visitors.
Five locations, one WordPress site running on a Divi theme that was slow, expensive, and quietly leaking PII through a comment field. The site ranked #3 nationally for "mexican food near me" — a single keyword worth 79K monthly visits — and 98% of organic traffic landed on the homepage. Touching anything was terrifying. The migration had to happen without losing a position.
<title>, H1, meta description, and on-page heading was captured from the live site and copied verbatim into the new build. Locked in version control. Anything that drifted in code review was a flag.hello@elpueblomex.com with subject lines that make inbox triage fast.The chain's sixth location, La Jolla, was scheduled to open in May. The "Now Open" build went live on 2026-05-04 — then the open date slipped, and the entire La Jolla page had to be walked back to "Coming Spring 2026" with the open-date alert form still capturing email signups. The full ready-to-launch data snapshot lives in content/la-jolla-launch-ready.json; relaunch is a single config flip plus three text reverts in build.mjs.
Cutover preserved rankings. The #3 position for "mexican food near me" held through and past the migration window. The chain pays nothing for hosting, the comment-field PII leak is patched, and the marketing team can edit hours and specials without touching code. The full DNS cutover and 30-day post-launch monitoring playbook is documented and reusable.
A fatal exception 0F has occurred at 0028:CAT_ON_KEYBOARD. The current application will be terminated.
* Press any key to ignore this and continue napping.
* Press CTRL+ALT+DEL again to restart your computer. You will
lose any unsaved information in all applications.
The cat has sat on the keyboard.
The cat has elected the keyboard.
The cat is now in charge.
About me: