EDMDb: The Electronic Dance Music Database
Discover festivals, follow artists, and explore events near you — powered by the world's electronic dance music database.
- Role
- Founder & Lead Engineer
- Period
- 2024 — present

Designed a monorepo around a shared Supabase data layer with separate web + MCP surfaces.
Built an MCP integration so AI agents can query the catalog as a structured tool.
Shipped festival, artist, and event discovery flows in the first release window.
Powered ingestion with a typed workflow runtime built on `next-workflow-builder`.
Why EDMDb exists
The catalogues I cared about — IMDb for film, Discogs for vinyl — never had a serious counterpart for electronic music. There are dozens of half-attempts: ticketing sites that let listings rot, fan wikis that capture lineups but not relationships, social platforms that surface today's noise but lose last year's. Nothing modeled the music the way Discogs models it: artists, labels, releases, gigs, all linked, all queryable.
EDMDb is my attempt at that model. A real database, with a real ingestion pipeline, a real public web app on top, and — increasingly — a real machine-readable surface so AI agents can query it like a tool.
Architecture at a glance
The codebase is a Turborepo monorepo built around four deployable surfaces and a shared Supabase Postgres layer. Everything is hosted on Vercel; database migrations are managed with Kysely.
Deployable surfaces
app— the public web UI at edmdb.net. Built on Next.js 16+ App Router, Tailwind CSS, and shadcn/ui. Auth is handled throughbetter-authwith Magic Link plus Spotify, Mixcloud, and SoundCloud OAuth. Search uses Algolia for instant indexing.admin— the internal management console. Same UI primitives asapp, but auth is restricted to Google OAuth viabetter-auth. Owns DB migrations (Kysely), triggersuseworkflowjobs, and runs manual Algolia indexing when needed.automation— the worker package. Cron jobs scheduled viavercel.json, an Algolia data-sync job that re-indexes Postgres into search, theuseworkflowruntime for multi-step ingestion, and Resend triggers for transactional email.mcp-server— the AI-facing backend at mcp.edmdb.net. Implements the Model Context Protocol so ChatGPT, Claude, or any MCP client can query the catalog as a structured tool. Handles OpenAI workflows and ships a small UI for development.
All four packages share a single Supabase Postgres database (PgBouncer connection pooling, separate prod and dev environments) and a single Vercel Blob store for entity images — artists, users, events, festivals, podcasts.
Shared monorepo packages
core— country lists and i18n utilities, date and time formatting, GeoJSON for the map views, normalizers and data-type helpers.db— every database schema, the Kysely instance, query helpers used across packages.ui— the shadcn/ui component layer, icon library, theming and style tokens.providers— encapsulates the integrations with external data APIs: Ticketmaster, Beatport, Bandsintown, Songkick, MusicBrainz, Podcast Index, and a long tail of others. Each provider is a thin adapter so the rest of the codebase deals in EDMDb's domain types, not vendor-specific shapes.
Local tooling and external services
- EDMDb CLI — a
commander.js-powered local utility for developers. The two main verbs areimport(pull external data into the local DB) andsync(push changes back out to Algolia or the providers). - Algolia — realtime search. Indexed by both the
automationpackage on a schedule and theadminconsole on demand. - Sentry, Vercel Analytics, Vercel Speed Insights, Vercel Logs, Google Analytics — the observability stack. Sentry handles errors, Vercel handles performance and traffic, Google Analytics fills in the audience picture.
- Resend & Novu — email delivery via Resend, multi-channel notifications (email, in-app, push) via Novu.
Features that shipped
The product surface area is built around what listeners actually do — discover, follow, plan, and revisit. The first release window covered fourteen distinct features; they cluster into four themes.
Personalised follow-along
- Watchlist — track favourite artists, festivals, labels, podcasts, and venues in one place.
- Personalised dashboard — a home view tailored to your music taste, with sections for podcasts, livestreams, and releases pulled from what you follow.
- Personal music stats — top countries, favourite genres, most-played artists, preferred venues, visualised so the journey is legible at a glance.
Discovery
- Event discovery — concerts and festivals near you, plus events from the artists, venues, and festivals you follow.
- Global coverage — surfaces emerging festivals and hidden gems worldwide; ties into the user's travel history when present.
- Latest updates feed — a continuously updated stream of trending content across electronic music with smooth scroll-to-load.
- Advanced filtering — combine date range, location, distance, artist, festival, venue, genre, event type, and ticket availability into one query.
Catalogue depth
- Complete artist profiles — the canonical view of an artist with every relevant link, release, and upcoming gig in one spot.
- Aggregated data — Bandsintown, Beatport, Spotify, SoundCloud, Ticketmaster, and the long tail of providers, normalised through the
providerspackage and surfaced as one unified catalogue. - Real-time updates — podcasts, events, and festival lineups refresh continuously as providers update upstream.
- Live experiences — real-time widgets for live events, voting, and music sync (Top100DJs, Spotify, global festivals).
Listening + AI access
- Podcast streaming — episodes appear on EDMDb the moment they hit the major platforms; play them in-app.
- Platform integration — import favourite artists from Spotify, SoundCloud, and Mixcloud so onboarding is one click instead of an afternoon.
- AI-powered access — through the MCP server, ChatGPT, Claude, or any MCP client can query EDMDb in natural language: "what festivals is this artist playing this summer," "which venues in Berlin host techno on Saturdays," and so on. The AI gets a typed tool, not a screen-scrape.
Where it goes next
The catalogue layer is in place; the next round is depth. Better release modelling (proper label hierarchies, distinct singles vs. EPs vs. albums, tracklists), richer venue profiles (capacity, sound systems, recurring nights), and tighter feedback loops with listeners. The MCP surface is the most interesting frontier — every assistant that adds the EDMDb tool effectively becomes a music concierge for its user, and that's a more durable path than chasing the next social platform.
Want something like this?
Available for freelance and contract work. The fastest way to start a conversation is email.