DanceClub
No unified platform for social dance events in Europe. Organizers used Instagram DMs and spreadsheets. Dancers had no way to discover events, follow organizers, or track attendance.
65
Gradle modules
10
Postgres schemas
4
Frontends
104
Published events
15
Localized markets
No unified platform for social dance events in Europe. Organizers used Instagram DMs and spreadsheets. Dancers had no way to discover events, follow organizers, or track attendance.
A multi-app production platform. Backend. Four frontends. AI pipeline. Infrastructure. All shipped end to end.
Kotlin · Spring Boot · PostgreSQL · Next.js · TypeScript · React · Docker · Caddy · Cloudflare · GitHub Actions
Backend: Kotlin · Spring Boot 3.4
- ·Modular monolith, 65 Gradle modules across 11 bounded contexts: auth, user, event, organizer, social, public, finance, analytics, audit, cdn, push
- ·Hexagonal boundaries between public domain, private domain, data access, API, business logic and REST layers, enforced at build time by architecture tests rather than by review
- ·Schema-per-context in one PostgreSQL instance, 10 schemas each with its own migration stream, so a context lifts out without a data migration
- ·Two contexts extracted as standalone services so far, sequenced off a generated dependency graph rather than a plan
- ·Event backbone migrated from RabbitMQ to Kafka with the messaging contract kept stable across the cutover
- ·Google OAuth2, JWT, API key auth with rate limiting, email OTP
- ·PostGIS geospatial queries, WebSocket real-time notifications, transactional email
- ·968 unit tests covering domain logic; real-Postgres integration tests via Testcontainers live in the extracted services
Frontend: Discovery App
- ·27 routes, 72 components, Mapbox GL interactive event map with list toggle
- ·PWA-enabled (installable), SSR/SSG, sitemap generation for SEO
- ·Social follows, dance partner matching, user profiles, event sharing
- ·Google OAuth login, React Hook Form + Zod validation
- ·Next.js 16, React 19, Tailwind CSS 4, Framer Motion, Radix UI
Frontend: Organizer Hub
- ·11 routes, 77 components, event creation, publishing workflow, team invitations
- ·Google Maps with place autocomplete for venue management
- ·Analytics dashboard with Recharts, TanStack data tables
- ·Event ownership claim system, organizers claim agent-created events via token
Frontend: Internal Backstage
- ·15 admin routes covering user management, content moderation, and platform configuration
- ·Business plan generator with revenue calculator and print-to-PDF
- ·Review pipeline for AI-submitted events before they go live
- ·Independent auth, Prisma ORM, CodeMirror editor
AI Event Intake: Powered by PulseAI
- ·Multi-stage automated pipeline that discovers, classifies, and publishes events
- ·Multi-provider LLM orchestration (Claude, GPT-4, Gemini) with failover
- ·Headless browser automation for data extraction and enrichment
- ·Automated quality assurance with AI-powered error correction
- ·Fully integrated with DanceClub's backend via dedicated Agent API
Infrastructure: live since 2026, self-hosted end to end
- ·Self-hosted end to end, every server, every secret, every deploy owned and understood
- ·Wired once, still running, the ops setup hasn't needed a rework since launch
- ·Full CI/CD on every push, lint, type-check, test, build, deploy. Zero manual operations.
- ·Separated staging and production with isolated secrets, zero-downtime deploys
- ·No SRE team and no on-call rotation, not because it's reckless, but because the system doesn't page
- ·The unglamorous part, monitoring, backups, deploy discipline, is exactly the part that keeps it alive
Live since 2026 · 65 modules, 10 schemas · Decomposition underway
Want this for your product?
Same discipline. Same ownership. A system that runs itself. Pick the shape of the work.