Inside Bars
2025What's on tonight in Berlin's bars — a live events map.
A web app (plus iOS/Android wrapper) for discovering bar events across Berlin, backed by Supabase and deployed on Vercel.
- React
- TypeScript
- Vite
- Tailwind
- shadcn/ui
- Supabase
- TanStack Query
- React Hook Form
- Zod
- Vercel
- Capacitor
- Hand-rolled OG previews for a single-page app
- SPAs serve one HTML shell, so shared links to individual events all previewed identically. I wrote ~165 lines of Vercel Edge Middleware to inject per-event Open Graph tags at the edge — the exact problem Next.js solves natively, which is part of why I chose Next.js for this site.
- Type-safe forms end to end
- React Hook Form + Zod share one schema between client validation and the shape written to Supabase, so a field can't drift out of sync between the form and the database.
- One codebase, three targets
- Capacitor wraps the same React build into iOS and Android without a second codebase — a pragmatic trade-off: faster shipping, at the cost of fully native feel. Store releases are prepared but not yet published.