Mary Imevbore
Vol. I · No. 01 · May 2026
Brooklyn, NY Est. 1996 Last updated May 2026
§ — Case Study · Engineering

MOYE

An online record store for the artist MOYE. Custom checkout backend, an audio player that survives page navigation, and a hand-tuned hover language.

TypeScript Angular Firebase Stripe E-Commerce
§ 01 — Problem

Problem

Off-the-shelf options for artist commerce — Shopify, Bandcamp, Big Cartel — are templated and constrained. They limit creative direction, impose a particular checkout shape, and don't preserve playback state across page transitions. For an artist whose work treats the album as a visual and sonic environment, the platform is part of the product.

MOYE's site is a custom Angular SSR build that owns its own checkout backend, runs a persistent audio player outside the router outlet, and treats hover and cursor behavior as part of the visual identity.

§ 02 — Architecture

Architecture

The frontend is an Angular SSR app deployed via Firebase App Hosting. Cart state lives in a root-scoped signal-based service with localStorage persistence. Checkout posts to a Firebase Function that re-fetches prices and validates stock against Firestore, builds line items server-side, writes a pending order, then creates a Stripe payment session. A webhook flips the order to paid once Stripe confirms. The audio player is a singleton service plus a single persistent <audio> element mounted outside the router outlet — playback continues across navigation.

§ 03 — Technical Decisions

Technical decisions

§ 04 — What's Next

What's next

  1. WAV streaming. The current player uses a bare HTML <audio> element with browser-native progressive download — no chunked range requests, no hover prefetch, no in-memory buffer. For high-fidelity tracks this gets sluggish. Chunked range-request streaming plus hover prefetch is the next perf win.

§ 05 — Links

Links