⇐ Blog

Rebuilding virya.music: a sub-second band site with a merch store

Outside work I rebuilt virya.music from scratch — the site for my band Virya — and added a full merch store along the way. It's a Gatsby site: statically generated, with a handful of serverless functions doing the dynamic bits. The goal was simple — make it fast, make it complete, and make it something I'm actually happy to ship. Every subpage scores 100 across all four Lighthouse categories, and LCP is sub-second everywhere.

Most of the speed comes from doing less on the client. The hero shows a poster image immediately with the video behind it; the Spotify embed is lazy-loaded with an IntersectionObserver and a skeleton, so no third-party iframe ever touches the initial load. Images run through Gatsby's pipeline as AVIF/WebP with explicit dimensions to keep cumulative layout shift at zero, and there are no web fonts blocking the first paint. The page paints almost instantly and stays interactive.

The parts you don't see matter just as much: clean per-page titles, descriptions and canonicals, Open Graph done properly (property, not name), JSON-LD structured data, a generated sitemap, and security headers with a real Content-Security-Policy. The site is bilingual — English and Polish — with hreflang tags so search engines serve the right language. None of it is glamorous, but it's the difference between a site that merely exists and one that ranks and shares well.

The merch store is the part I enjoyed most. Checkout runs through Stripe; shipping uses the InPost paczkomat picker that Polish buyers actually expect; and each order fires a confirmation email. The contact form works the same way — a small Gatsby Function with nodemailer rather than a third-party form widget. Keeping the dynamic pieces as serverless functions means the site stays static, fast and cheap to host while still taking real orders.

None of this is groundbreaking on its own — it's careful assembly of well-understood pieces. But that's the point: a small site can be fast, accessible, multilingual and able to sell things, without a heavy stack or a pile of third-party scripts. Go have a look — and if you like loud music, the merch is right there.


© Wojciech Bator