Case study
Club and Resort Operations Platform
In plain English
Club members book courts and pay without calling the front desk. Staff run the club without logging into ERP.
App, staff dashboard, and ERP stay in sync without re-entering data.
Who it is for
- Club members who should not need to call the front desk or log into ERP to book a court, add a guest, or see an invoice.
- Club staff and ops (operations, front desk, guest services, communications, revenue) who need a dashboard that is not raw ERP.
Problem
Membership, bookings, invoices, and helpdesk otherwise live in ERP. That is fine for accountants; it is a poor member experience and a slow ops console.
Staff needed one place to run the club. Members needed a modern app for courts, spa, events, and payments, without calling the front desk or logging into ERP.
Solution
We built a Flutter member app, a Next.js staff dashboard, and a NestJS API with two-way Odoo sync. Members book sports, spa, and events, bring guests with QR day passes, share a family wallet, and submit offline payment proof. Staff manage members, calendar, resources, billing, and revenue with role-based access.
The backend covers membership login with device trust and OTP, bookings, guests, family accounts, invoices, push notifications, and realtime updates so the app, dashboard, and ERP stay in sync. Members pay the way the club already collects: One Link plus proof upload, not in-app card checkout.
Outcomes
A production club platform with a modern member experience and ERP as the system of record for memberships and billing.
Operations stay accurate without re-entering data across app, dashboard, and Odoo.
How it works
Booking, billing, and guests
What we built
Member app
Sports, spa, and events
Live slot matrix, quotes, confirm, and ticketed club events.
Guests
Saved guests, eight-hour day pass, and a shareable entry QR.
Family wallet
Shared wallet, per-dependent budgets, and activity.
Billing
Invoices, subscriptions, One Link ID or QR, and payment-proof upload.
Feedback and news
Tickets with attachments; announcements and booking reminders on the phone.
Staff dashboard
Overview and calendar
KPIs for members, bookings, complaints, and revenue; create, view, and cancel bookings.
Resources and members
Configurable courts, services, and pricing; family wallet top-up with permission checks.
RBAC
Job roles plus permission keys and per-user overrides, not a single admin boolean.
Billing and feedback
Invoices, paid override, payment proof, helpdesk kanban, events, and news.
How it works
Both clients talk only to the NestJS API. PostgreSQL is the app working copy. Odoo stays the system of record, synced inbound and outbound on a timer when enabled.
Redis backs OTP, locks, and Socket.IO. Fine-grained staff permissions gate dashboard modules. Floor roles can authenticate but have no dashboard modules, by design.
Integrations
Odoo ERP
JSON-RPC sync of partners, appointments, calendar, helpdesk, invoices, subscriptions, and One Link fields.
Firebase Cloud Messaging
Booking reminders and news push.
AWS S3
Profile photos, feedback attachments, and event images.
Redis and Socket.IO
Realtime invalidation, OTP, and device trust.
Have a similar challenge?
Start a project