FIELD OF
DREAMS
One system to run the whole facility
This is a venue operations platform I built and own, shown here as deployed for a multi-use athletic facility. It is ready to be rebranded and configured for any similar venue: sports complexes, training centers, gyms with rental space, and community athletic centers.
One developer, one platform, replacing two vendor systems — Vagaro for memberships and check-in and WordPress for the public site — and eliminating their monthly fees. The Field of Dreams branding on the demo is the example skin.
Operations, end to end
Five surfaces share one codebase: the public software, a member portal, a tenant and provider portal, an admin back office, and a check-in kiosk.
- Public software — home, memberships, space rentals, on-site providers, about, contact, and policy pages (waiver, facility guidelines, membership agreement)
- Memberships — Gold, Platinum, Day Pass, and Trial tiers with online signup and Stripe payment, plus a self-service member portal with QR check-in code, check-in history, and profile
- Check-in — QR and phone check-in, a facility kiosk mode, and walk-in visitor self check-in with operating-hours enforcement
- Space rentals — public and member booking against a live availability calendar with online payment
- Tenant and provider portal — leases, document upload and approval, invoices with online payment, support tickets
- Admin dashboard — members, tenants, bookings, invoicing (create, send, PDF), document approvals, support queue, CSV exports, revenue and analytics charts
The hard parts, handled
Every rental slot is checked by a three-layer availability engine: confirmed bookings, recurring tenant lease schedules, and approved recurring rental requests. A “Full Turf” booking cascades to its zones, and the same pipeline feeds the calendar with role-aware events, so admins see tenant names while the public sees “Reserved.”
Payment activation stays correct when Stripe’s webhook races the member’s browser back to the server: the member record is created before redirect, and an atomic conditional status transition guarantees the welcome email fires exactly once.
- Signed QR credentials generated with ZXing and scanned by a camera-based kiosk, with tier-based access rules (Platinum 24/7, others within operating hours)
- Auto-generated monthly invoices with PDF output, Stripe payment links, and scheduled reminder emails
- Production hardening — strict CSP and security headers, per-IP rate limiting, HMAC-signed calendar feeds, path-traversal-safe document storage, and startup validation that refuses to boot with placeholder secrets
- Pluggable integrations — Stripe, email, QR, storage, and PDF each sit behind an interface with a local implementation, so the full app runs locally with zero credentials
- 1,900+ automated tests (JUnit 5, Mockito, Spring Test) plus 322 Playwright responsive checks across five viewports and Lighthouse CI performance budgets
Built for venues leaving Vagaro
Migration tooling is a built-in capability, not a one-off script. Members import from Vagaro exports without re-enrollment, and a card re-collection flow runs ahead of renewal, since saved payment methods cannot transfer between processors for PCI reasons. The same path works for venues coming from Mindbody or similar tools.
Built and owned as a complete, production-grade platform: 24,000 lines of production code and 35,000 lines of tests across 27 controllers, 17 entities, and 40+ database migrations. Deployed via GitLab CI/CD to DigitalOcean App Platform with managed PostgreSQL and Spaces storage.
LET'S TALK.
This platform can be configured and branded for your venue.
Get in touch →