Software · Production

QlubPro

Multi-tenant SaaS for tennis league management with subdomain routing and contextvar-scoped query isolation.

a tennis court with a rotating symbol

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.

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.