What it does
Get a curated read on Bay Area arts, comedy, live music, and workshops, scored by your own preferences instead of a generic chronological feed.
Currently
Live at sfbaydar.com as Baydar (moved from k8mak.com/bay-area-events on 2026-11-03). It scrapes several local sources on a daily cron and leads with a photo of the weekend's top event, a Bay map whose town dots pick a region, and photo strips by category, with category art standing in for the many events that have no picture. Browse re-ranks against per-visitor preferences stored in your browser. No account needed. Served by the k8mak.com Next app on its own domain, on Supabase.
Recently shipped
- Nov 3, 2026Became Baydar: a midnight-blue world, the radar mark in the header and tab, a full-bleed hero photo, region chips for the whole Bay, a traced Bay map with pulsing town dots, photo-first cards with category art, and a Baydar 404.
- Jun 15, 2026Shipped a UX backlog: a how-this-works explainer, a seven-region picker, a personalization teaser that deep-links into Browse, and mobile category-pill scrolling.
- Jun 14, 2026Fixed the scrapers after date-hardening exposed stale selectors: funcheap via JSON-LD, dothebay via schema.org microdata, and SJPL via the library gateway API.
- Jun 13, 2026Added per-visitor preferences, a cached geocoding map layer, an admin scraper-health page, and date-parse hardening.
- Jun 10, 2026Shipped the public app, ported from a standalone repo onto the site on Supabase, seeded with real events.
How I know it's working
live data ยท last 30 daysNon-bot visits per week that open an event's detail page or click out from one. The query is site/lib/bay-area-events/north-star.sql. First reading, 2026-11-02: 3 in the last 90 days, the latest on 2026-10-02.
bae_launchedbae_event_viewedbae_directions_clickedHow it's built
How I built it
I wanted a single place to see what is happening in the South Bay that actually pays attention to what I like, so I built one and made it public. It pulls from several local sources every day, puts venues on a map, and quietly re-ranks everything against the preferences you set, all stored in your browser with no account. The part that taught me the most was the plumbing nobody sees: when I hardened the date parsing, I discovered that several scrapers had only ever appeared to work because undated events defaulted to today, so I had to rebuild them against each site's real markup. This is the public, decoupled version, distinct from the private couples edition I keep inside our household hub.