QlubPro
Multi-tenant SaaS for tennis league management with subdomain routing and contextvar-scoped query isolation.
QlubPro is a multi-tenant SaaS application for tennis leagues and clubs. Each club gets its own subdomain and a fully isolated data environment — schedules, player rosters, match results, and standings — without the complexity of separate databases per tenant.
Tenancy is resolved at the request level via subdomain and stored in a Python contextvar, which is then used to scope all querysets automatically. This approach keeps business logic clean: views and models don't need to pass a tenant object around; the middleware and a custom manager handle isolation transparently.
The frontend uses HTMX for partial page updates and Alpine.js for lightweight client-side state, keeping the JavaScript footprint small while still delivering a modern, responsive experience. Built on Django 6 and deployed on Railway.
Outcome
Live multi-tenant SaaS at qlubpro.com running Django 6. Subdomain-based tenant resolution with contextvar query scoping provides complete data isolation between clubs without separate databases. HTMX and Alpine.js deliver a responsive UI with minimal JavaScript overhead.