Professional tenant management platform with enterprise-grade features
Race-day timing, broadcast overlays, and tenant operations — from entries through live results
Fullscreen timing on your tenant domain — no separate SaaS login. Officials pick races from the sidebar, time on video or by hand, mark DNS/DNF/DSQ, and publish to official results and the public PWA.
Video timing mode — Men U16 K1 200m heat with lane grid and photo background.
Staff console plus a fixed 1920×1080 transparent overlay URL for OBS, Wirecast, or TV. Camera stays in OBS; RaceManager supplies branded race graphics. Two competitions can stream at once via separate overlay URLs.
Heat overlay for OBS — unofficial results, Timing Desk clock, and tenant branding.
Country domains and schema-per-tenant isolation, with branding, settings, and data kept strictly separate.
Athlete profiles, club affiliations, licenses, and performance tracking across all tenant competitions.
Scheduling, entries, heats, progression editor, publishing, and rankings — from registration through finals.
Installable public results app with live updates and push notifications — built for venue-scale race-day traffic.
Sprint is core. Optional Kayak Polo and Kayak Cross modules add tournaments, brackets, and discipline-specific results.
English, Norwegian, Swedish and Danish, plus international competitions with multi-tenant entries.
Currently serving 3 tenants across 3 countries
Production-grade architecture — request flow, multi-tenant isolation, performance layers and integrations. Built for national, regional, and club organisations that need reliability, security and room to scale.
Designed to embed alongside membership and finance systems.
Three national tenants live on dedicated country domains — Norway, Sweden and Denmark.
Native timing desk, Stream Studio overlays, ALGE import, entries, heats, live results, rankings and public PWA.
GDPR-friendly hosting in Stockholm with strict per-tenant data isolation.
Edge caching, Redis and rate protection for venue-scale public results traffic.
OpenAPI-documented REST API, webhooks and export pipelines for integrators.
200+ page in-product manual, operator runbooks and structured platform transfer programme.
| Service | Role |
|---|---|
| Nginx | TLS termination, static assets, reverse proxy |
| Varnish | HTTP cache for public pages and API responses |
| FastAPI | Async API and server-rendered admin UI |
| React PWA | Progressive web app for athletes and officials |
| PostgreSQL | Primary database with schema-per-tenant isolation |
| Redis | Caching, rate limiting and session helpers |
Every request carries a Host header (e.g. racemanager.no).
Platform middleware resolves the tenant from that domain and routes all database
queries to the correct isolated schema — full data separation without separate servers
per tenant.
Custom country domains (e.g. racemanager.dk) with branded login and cookie isolation.
| Traffic | Handling |
|---|---|
/static, uploads | Served directly at the edge — fast, cacheable |
/app/* PWA | Cached SPA assets; offline-capable service worker |
/api/public/results | Edge + Redis cache for live results under load |
/admin, auth | Direct to app — session-safe, never cached |
| Country domains | Each tenant on its own TLD with 301 aliases from legacy subdomains |
| Layer | Use case | Policy |
|---|---|---|
| Varnish | Public results API, competition lists | Short TTL with grace period; purged on result updates |
| Varnish | PWA static assets | Long-lived immutable cache (content-hashed filenames) |
| Redis | Results payloads & version polling | Sub-minute TTL; keeps venues responsive during peak load |
| Nginx | Static files & uploads | Days-weeks cache; deploy cache-busting on JS/CSS |
| Browser | PWA service worker | Offline-first for installed apps at the venue |
Login and API endpoints are rate-limited at the edge and application layer to protect against abuse while keeping public results pages fast during major events.
Operators get real-time platform pulse: health endpoints, tenant traffic analytics, backup status, SSL expiry and automated self-checks — all from the admin dashboard.
Per-tenant license payments with webhook-driven activation. Test and live modes supported.
Verification, notifications and password reset via Resend with SendGrid fallback.
Optional AI help desk per tenant with credit-based usage tracking.
Browser push notifications for installed PWA users at competitions.
Country and city breakdown in tenant traffic monitoring.
OpenAPI-documented REST API, Excel import/export and webhook endpoints for custom integrations.
Transparent 1920×1080 Browser Source overlays for OBS, Wirecast or TV. Overlay clock follows the Timing Desk gun.
| Python 3.13 | FastAPI + async SQLAlchemy |
| PostgreSQL 15 | Alembic migrations |
| React + Vite | PWA frontend |
| Docker Compose | Production orchestration |
| WeasyPrint | PDF results & start lists |
| Excel I/O | Import/export pipelines |
| JWT + cookies | Hybrid auth model |
| Multi-language | EN, NO, SE, DK |
| TLS 1.2+ | Let's Encrypt |
| RBAC | Role-based access |
| GDPR-ready | EU hosting |
| OpenAPI | Interactive API docs |
Integrate with our comprehensive API for custom solutions and third-party tools