Independent Product
A concert-history dashboard backed by a real database, heatmaps, tour maps, and a memory wall.
The recap, the heatmap, and a setlist deep-dive
Every concert I've been to lives as a row in a Postgres database, artist, venue, date, who I went with. Admit One turns that history into a personal, Spotify-Wrapped-style retrospective: total shows, a shows-per-year chart, home-turf venue rankings, a genre leaderboard, a "dive bar → stadium" venue-size breakdown, a GitHub-style monthly heatmap, streaks, a setlist deep-dive, a photo memory wall, and an interactive tour map with a "relive the tour" route replay. I designed and built the whole thing, backend included.
Admit One started with a Google Sheet as its database, read live via the Google Visualization API to avoid running a server. That worked until the dataset and the feature list both outgrew it: no real schema, no real auth beyond a shared passphrase, and no good way to enforce data integrity as more shows, venues, and photos piled in. The Sheet has since been retired for Postgres on Supabase, with the browser talking to it directly through Supabase's client SDK, row-level security scoping every read and write to the signed-in user, and real sign-in (Google OAuth or a magic link) replacing the old passphrase-protected write flow.
The point isn't logging tickets, it's looking back. Shows-per-year and monthly-heatmap views surface patterns I'd never have noticed manually (which months I actually go out, which years were dry spells), and the venue-size breakdown turns "dive bar to stadium" into an actual chart instead of a vague memory.
Setlist.fm, Last.fm, Deezer, and Google Photos all get proxied server-side instead of called directly from the browser, keeping API keys off the client and sidestepping CORS restrictions none of those services support.
The service worker never force-activates a new version, instead it surfaces an "Encore Available" prompt so I choose when to update, without losing my place mid-scroll.
No framework, no build step on the frontend, plain HTML/CSS/JS shipped as an installable PWA with a hand-written service worker, backed by Vercel serverless functions talking to Supabase Postgres. It's deployed on Vercel with a small CI workflow that bumps the service-worker cache hash on every push, and it's under active, ongoing development.
Next Projects
Experience DesignHomepage RedesignIncreased homepage clickthrough rate 84.9% through research-driven redesign.
Experience DesignShopping Experience IterationsFour usability-testing-driven fixes across search, filters, merchandising, and collections, shipped as one cadence.
Experience DesignStore UpdateA persistent store preference that carries across checkout, inventory, and promotions, cutting pickup support calls 19%.Systems DesignDesign System & Page Builder KitThe platform layer other teams build campaigns on top of, composable modules with governance built in, not bolted on.Systems DesignPromotions UX PlaybookA tiered placement framework, timer trigger logic, and a governed update process, replacing ad hoc calls between global and regional teams.Systems DesignGlobal Navigation RedesignA modular nav system built to absorb promotion without breaking wayfinding, across regions and product lines.