Warming up the courts...
Features For Clubs For Coaches For Schools Support Contact Log in Get Started →
Get Started
South Africa's #1 Club Management Platform

One App.
Everything Your Club Needs.

Bookings · POS with stock + auto payment tracking · Memberships with automated subscriptions · Coaching with auto court booking · Tournaments with bracket + result tracking · Duty Roster with swaps + reminders · Per-minute prepaid court lighting · Access control with automated member gating · Live club website (builder or templated, always in sync) · Club purchases with financial tracking · Automated WhatsApp campaigns with live polls + payment links.

Plus Ace, an AI assistant that actually helps. The whole club platform, priced for South African clubs.

No signup No email Runs in your browser Installs as a PWA
Active Clubs
Total Members
Total Courts
Active Players
Matches Played
hrs
Court Hours Logged
Social Partnerships
Coaching Sessions
Bookings
Booking Members
hrs
Court Hours Booked
Guest Bookings
What is this?
Mzansi Court Q, in plain English

One platform for the app your members open and the back office your committee runs.

Mzansi Court Q is the software that runs your tennis club — the app members open on their phone, and the back office that keeps the lights on, the bar stocked, and the duty roster fair.

Most South African clubs run on a familiar patchwork: a WhatsApp group for chat, a spreadsheet for members, a booking app that half the club never opens, a card machine at the bar, and one long-suffering volunteer with a clipboard for the duty roster. It works — right until the treasurer's laptop dies or the WhatsApp group hits its member cap.

This platform pulls all of that into one place. Members get a proper app for bookings, payments, match stats, and lesson requests. The committee gets a wide-screen portal for memberships, duty rosters, court lighting, POS, coaching, and everything in between. Ace — the club chatbot — lives inside your existing WhatsApp group; nothing new to install.

Built by a committee member for volunteer-run clubs. Weekend committees, not IT departments. If you can post in a WhatsApp group, you can run this.

Replaces the stack most clubs cobble together:
  • A dedicated court booking app
  • A POS terminal at the bar or tuck shop
  • The member spreadsheet nobody wants to inherit
  • A prepaid lighting timer and coin box
  • The duty roster taped to the clubhouse door
  • A separate WhatsApp broadcast tool, poll bot, and reminder cron

Below is every module in one place — grouped so you can find what your club needs. See the platform tour

Platform Features
Everything a club needs — grouped so you can find it fast
Group 01

Bookings & Courts 6

🎾 Book a Court From Your PhoneReserve any court up to 14 days ahead — pinch-drag the time, add partners, invite a guest, pay in one flow.

Members book courts up to two weeks in advance in a slick mobile UI — pinch-drag to pick a 30-minute range, add playing partners, invite a guest and settle the guest fee via Yoco right on checkout. Every court shows floodlight availability, existing bookings and Notify-Me waitlists on any taken slot, so a cancellation snaps straight to the first person who wanted it. Move a booking to a different court or time in three taps with the full audit trail preserved.

🔁 Programs & Pickup Auto-Book Their CourtsRecurring coaching programs and weekly pickup groups reserve their courts week after week — no manual re-booking, ever.

Set up a Junior Squad every Wednesday or an Adult Squad every Tuesday morning, and Mzansi rolls the court reservation forward for weeks ahead automatically. Skip a public holiday, swap in a replacement date, add or drop weeks — the rolling top-up handles it in the background. Social bookings that clash with a paid program are gently rescheduled with an audit note; real member and pickup bookings are always respected.

🤝 Challenge & Auto-BookSend a game request, they accept with a day — one tap books the first free court and notifies you both.

Send a game request from the dashboard — the target member gets an in-app message and a WhatsApp ping. When they respond with their preferred day, you see a Book The Slot button pre-filled with both of your preferred time windows. One tap finds the first free court, creates the booking and fires standard confirmations to both of you. If no court is free, the app takes you to the bookings page with your partner already selected.

📅 Committee Block BookingsReserve courts for Social Day, coaching, tournaments or maintenance — weekly, monthly or last-Friday recurrence.

The committee sets recurring court reservations — Every Saturday for Social, Last Friday of the month for League — with a preview of every date before commit. Punch a hole in the series to skip a specific date without deleting the rule; cancel with one tap and every future slot is freed. Bookings feed straight into WhatsApp so members see them announced automatically.

🌦️ Live Court Weather StripReal hour-by-hour weather for your club's courts — an inline chip on every upcoming booking.

The dashboard shows a Court Conditions strip with today's play forecast in four bands, powered by a per-club cached weather feed. Flick between today, tomorrow and a six-day window with a smooth chevron animation. Every upcoming booking on the dashboard, bookings page and lesson card also carries an inline weather chip for its exact SAST hour — no more guessing before you drive out.

🗓️ Live Bookings on Your DashboardYour next three court reservations pinned to the top of the dashboard, each with its own weather chip.

The My Bookings section shows the next three upcoming court reservations with court letter, date, time range and an inline weather chip pulled at the exact SAST hour. Cancelled or moved bookings drop off automatically. Tap through to the full bookings module to manage, cancel or move a slot in seconds.

Group 02

Social Day & Play 7

🎯 Smart Match SuggestionsBalanced foursomes for social play — 90-day form, opponent strength, gender mix, badge focus — one tap.

Tap the suggestion button and the app cycles through three quality-filtered options — same-sex, mixed, or badge-focused (helps you unlock Social Butterfly by pairing you with someone new). A Power Score blends 90-day results, opponent strength and today's form to build the most competitive foursome possible. Same-sex requests never fall back to mixed by accident, and vice versa — you always get the game shape you asked for.

⚖️ Balanced Teams ButtonOne tap on any court splits four players into the tightest possible teams by rolling Power Score.

Once four players are on court, the Balanced button computes the fairest pairing based on each player's rolling Power Score. Mixed courts respect one man plus one woman per team; same-sex or uneven courts try three pairings and pick the smallest strength gap. A 60-second countdown lets players confirm or override before the match starts.

🏸 Choose Your Scoring FormatFive scoring modes — 1 Set, 3 Sets, Fast Play, Sudden Death or 3 × Match Tiebreaks — pick per game.

Members get a big-tile picker showing all five scoring modes with clear infographics and estimated match length before every social game. Fast Play adapts to the club's first-to-N configuration (4, 6 or 8 games). Sudden Death removes deuce; 3 Match Tiebreaks is a 25-minute best-of-three format for quick turnaround days. If the wrong mode was played, a duty admin can PIN-override at score entry without losing any points already keyed in.

🔊 Court Announcement VoiceThe clubhouse speakers call your court, teams and format — "Sudden Death Deuce, Lekker Speel!"

When a game starts, text-to-speech announces the court number, teams and scoring mode over the club's audio system with a warm Lekker Speel sign-off. Every scoring mode has its own natural cue — Sudden Death Deuce for No-Ad, best of three match tiebreaks for the fast format. Perfect on busy Saturdays when people miss visual pings.

🏅 Achievement Badges52 badges across nine categories — from First Set to Legend to Court King — earned as you play.

Members earn badges as they play — win streaks, total matches, win rate tiers, court time, partnerships, social play (played with everyone in your club), court royalty (most wins per court), consistency (weeks in a row) and annual specials like Year Champion and Comeback Kid. Once earned, badges are never lost even if stats dip. The dashboard shows next-badge progress with rarity percentages so members always know what to chase.

🔄 Weekly Pickup Groups That Book Their Own CourtsTurn any WhatsApp group into a self-managing weekly doubles session — courts booked automatically, week after week.

Convert a WhatsApp chat into a Pickup Group and Mzansi handles the rest — court booked ahead of time, availability poll sent, reserve promoted when someone drops out, chained substitute searches, day-before reminder posted. Fair rotation keeps play-counts balanced so nobody hogs court time. A one-hour safety net auto-cancels the session if the group hasn't hit quorum, so you never turn up to a two-person game.

🍕 Pickup Food Polls & Game RemindersPre-order snacks and drinks for pickup night — the poll closes on schedule and posts a clean order summary.

Every pickup group can run a food poll ahead of the session — pick items, choose quantities, done. The poll closes with the game reminder and whoever is cooking gets a clean order summary with names, quantities and prices. No more scrolling back through WhatsApp to see who ordered what.

Group 03

Communication & AI 8

🎾 Ace on the App — Your AI Club ConciergeAsk Ace anything in the portal — balances, badges, next duty, coach programs, tournament results — real answers, live data.

Ace Tennyson is a warm SA-flavoured assistant that lives inside your member portal. Ask him for your wallet balance, your longest win streak, your next duty date, this weekend's league match or whether the coach has a slot on Thursday — he pulls the answer from your club's live data, never made up. He remembers context inside a chat, warns before doing anything that moves money, and drops the odd Eskom joke.

💬 Ace on WhatsApp — Book, Cancel or Move Courts by Chat"Ace, book me a court at 6pm Wednesday" — done, in WhatsApp. No app, no login screen, no PDFs to read.

Older members and anyone who prefers WhatsApp over apps can just message Ace, the club's AI assistant. He runs a natural, multi-turn conversation that books, cancels, moves or re-books your court — always confirming before anything moves. Ace also handles wallet top-ups and switching your court lights on, all through the same chat. Massive for members who never quite got the hang of the PWA — just tennis in their favourite chat window.

💭 In-App Chat With Your ClubDMs, group chats and system conversations with tick states, typing indicators and push notifications.

In-app chat with sent, delivered and read ticks, typing indicators, group chats with multi-admin support, and push notifications that deep-link straight to the conversation. Auto-successor promotion means groups never end up orphaned when the admin leaves. Pickup groups get their own chat where the dropout and reserve buttons live inline.

📊 WhatsApp & App Polls Stay in SyncVote on any club poll from either your app or WhatsApp — both channels write to the same live tally.

Community polls, pickup availability and event RSVPs run on the same rails as WhatsApp polls. Voting via the app OR via WhatsApp writes to the same tally — the committee sees one clean count regardless of channel. Older members who prefer WhatsApp are never left behind; younger members who prefer the app get the same result. Tallies edit themselves in-place in the WA group as votes arrive.

🚀 Campaign Composer — Broadcast AnythingFire a WhatsApp + email campaign to targeted groups with polls, payment links and AI-written copy in one flow.

One committee tool replaces every ad-hoc broadcast: pick WhatsApp groups AND email audiences (by membership type, dynamic group, or WA-group bridge), attach 14 kinds of link previews (events, coaching programs, tournaments, external URLs), AI-write both message bodies from one prompt, add polls and Yoco payment links (routed to club, academy or coach), then Preview to yourself before sending or scheduling for SAST business hours. Live delivery dashboard tracks sent, failed, paid and voted in real time.

🔔 Smart Payment-Chase Follow-UpsReminder campaigns work out what each member actually owes right now — merged tabs, cancelled links, new tabs — one perfect message each.

Instead of blasting a generic "you still owe us" template, the composer resolves every recipient's live outstanding at fanout time and writes a tab-itemised body with one or two live Yoco links per person. Merged tabs get per-source subtotals with a Grand Total. Members who've paid since the campaign started are silently skipped. Reminders collapse onto the parent campaign tile so the history stays tidy — no reminder-noise on your dashboard.

🔄 In-App Duty Swaps Without a Group ChatA member requests a swap, the other person picks which of their own duties to trade, the requester confirms — or a committee admin swaps two people directly.

Duty swaps live inside the app, not on a WhatsApp poll thread. A member taps Request Swap on one of their upcoming duties and picks someone to trade with; the other person opens the request in-app, selects which of their own duty days they'd swap in return, and the requester confirms the final date. The roster updates instantly for both members and every downstream reminder re-targets the new person. Committee admins can also swap any two members directly from the roster admin view — one tap, no back-and-forth needed. A full audit trail keeps the history intact.

📧 Branded Email From Your Own GmailEvery automated email — receipts, welcomes, confirmations, announcements — goes from your club's Gmail in your brand.

Connect Gmail via OAuth once and every automated email goes out from the club's own address, in the club's branded dark-theme layout, with the club's logo. Nine template types cover every situation from receipt to renewal reminder to lost-and-found alert. A three-layer sender ensures verification and share emails always land, even when your Workspace is offline.

Group 04

Coaching, Academies & Juniors 6

🎓 Coaching Program RegistrationsRecurring squads and clinics with online enrolment, automatic weekly court holds, per-entity books and rain-out rescheduling.

Coaches publish recurring programs — Junior Wednesdays, Adult Squad, Beach Tennis — with schedule, capacity, price and audience filters. Members register in-app in three taps or the public gets an entry via a deep-linked share page; Yoco checkout collects the fee straight into the coach's or academy's own wallet. Every session gets its court reserved automatically for weeks ahead, and paid or unpaid status flows into the coach's per-year financial workbook.

🎾 Request a Lesson From Any CoachBrowse coaches on your phone, request a private or group lesson, pay when confirmed.

Every coach at your club has a rich profile page — photo, bio, specialties, pricing bundles, gallery. Members tap Request a Lesson, pick preferred days and skill level, and the coach gets a notification to accept, propose an alternative or decline. Once accepted the booking goes in, membership caps are respected, and rained-out lessons get a one-tap reschedule with the court freed instantly.

📱 Coach "My Academy" Mobile HubCoaches see today's lessons, students and request queue on their phone — no laptop needed.

The member portal picks up an Academy hub for active coaches and academy admins — my bookings, students list, live calendar, lesson-request queue with count badges. Coaches self-book lesson courts from a day-grid picker with recurring batches (repeat this Thursday's slot for eight weeks with per-week skip checkboxes) — courts locked atomically or the whole batch rolls back on conflict.

🏫 Multi-Club AcademiesOne academy, many clubs — one login, one wallet, one referral code, coaches auto-become members at every linked club.

Academies live above individual clubs as top-level tenants — an academy can operate at three clubs with one login, one Yoco wallet and one branded portal. Referral codes link new clubs and unlock platform-fee waivers for months. Academy admins see cross-club calendars, lesson requests, students and per-tenant financials; coaches under the academy get automatic Coach memberships at every linked club.

🧵 Racket Restringing ServiceOrder restrings, grips and bumpers online — pay by Yoco, join the queue, collect at the club.

Academies and stringers list their service catalogue with prices and add-ons; members tap Order, add optional racket notes, pay via Yoco and land in the queue. Coaches see paid but not-yet-completed orders in a live queue; mark-complete stamps the ledger. Adverts run automatically to the community feed and via WhatsApp campaigns to saved groups.

👨‍👩‍👧 Family Sub-Profiles & Bundle DiscountsOne parent account holds up to four family members — cheapest-first discount slots (first junior 100% free under Full Adult).

Members add children (name, DOB, medical, allergies) or adult family members as sub-profiles under their own account. Each dependent gets an auto-created account and membership record linked to the parent. Fictitious mzansi.app emails let children under 16 be members without their own email address; password resets route safely to the parent. Cheapest-first slot logic makes bundle pricing feel fair — no maths for the treasurer.

Group 05

Payments & Financials 8

💰 E-Wallet — One Balance, Many UsesLoad once with Yoco, then pay for lighting, guest fees, bar tabs, ball tubes and events with a tap.

Your club e-wallet holds a real ZAR balance topped up through a Yoco Checkout link. Spend from it instantly on lighting minutes, guest booking fees, POS bar and food tabs, ball tube purchases, coaching programs or event entries — no card swipe required. Every transaction is logged to an immutable ledger visible in your history view, filterable by month, year or category. Refunds go straight back to the wallet.

Tap-to-Pay Yoco Top-UpsCards never touch the app, and a 5-minute reconciler settles any payment that missed a webhook — members never pay twice.

Every top-up flows through Yoco Checkout — the same secure hosted page you'd use anywhere else. Cards are never stored in the club system. A cron-based safety net polls Yoco every 5 minutes and settles any payment that made it to the bank but missed the webhook, so a payment never gets "lost". Members are never asked to pay twice because of a network hiccup.

🔁 PayFast Recurring Membership BillingMembers choose annual or monthly — PayFast handles the recurring debit, live pricing flows through automatically.

Assign a member on annual or monthly cadence; monthly members are debited on their chosen day via PayFast recurring billing at the type's live monthly rate. Bump the type price from R140 to R150 and every current member's statement recalculates for the remaining months — historic paid months stay at what they paid. Grandfathered rates are supported via per-member overrides.

🍺 Point of Sale for the Bar & KitchenTablet-first POS at your club's own subdomain — drinks, food, retail, open tabs, split payments and instant receipts.

Runs on any tablet at your bar or kitchen counter. Three-column tablet layout (categories · items · ticket) collapses to a phone layout under 700px. Accept cash, wallet, Yoco device, Yoco payment link, split-payment (wallet hold plus card remainder), open account or comp. A Custom category lets committee ring "broken glass R50" or "tournament entry R120" on a member's tab without a catalogue item. Every paid sale fires an emailed receipt in the club's warm branded voice and writes to per-club Google Sheets automatically.

📊 Member My Account — All Your Money in One PlaceEvery open tab, past receipt, top-up, lighting session and coaching payment in one filterable timeline.

The Member My Account page aggregates every financial thing your club has done with you — POS sales, lighting sessions, wallet top-ups, ball purchases, coaching programs, membership fees. Filter by 1D, 7D, 30D, 12M, YTD or Custom. Tap any line for the receipt. Toggle auto-renew for your membership, set your reminder-channel preferences, resend receipts and pay open tabs yourself via Yoco.

🧾 Pay Your Bar Tab From Your PhoneTab left open? Settle from your phone via Yoco — no queue at the counter.

Every open POS tab is visible on your My Account page with a Pay Now button. Complete Yoco checkout and the receipt lands in your inbox and on WhatsApp. Missed the webhook? A background reconciler polls Yoco every 5 minutes and settles automatically — you'll never be told "pay again" because the network hiccuped.

📝 Universal RSVP / Register / Pay PopupOne wizard signs you up for any event, program, tournament or coaching session — and splits the payment automatically.

Wherever you tap Register — event, coaching program, club champs, tournament, match-day food — the same in-place popup handles identity, eligibility, day and partner picks, add-ons and payment. Split payments route each recipient (club, academy, coach) to their own Yoco account, POS tab or e-wallet — the money always lands in the right books. Signed-in members skip identity; brand-new visitors get a lightweight three-field registration that creates their account and Basic membership in one go.

🎾 Ball Sales & HandoverSell tins in-person or via WhatsApp link, track stock, handover reminders on every committee screen.

Committee members sell tennis balls for cash, Yoco device, in-app Yoco (member confirms then pays) or against a wallet balance. Stock decrements atomically, the Google Sheet ledger records every movement with stock-before/after audit, and a persistent handover banner surfaces on every committee screen until the buyer collects. Members can be re-notified via Ace when their in-app purchase is ready.

Group 06

Committee Operations 9

📆 Duty Roster Auto-GeneratorPick one or several duty days a week, mark your holiday weeks, press Generate — fair distribution across every committee member, whole year at once.

Choose one duty day a week or several — Wed and Sat, Fri only, Tue plus Thu plus Sat, whatever the club runs. Add holiday exclusion windows so nobody gets rostered on Christmas week, April school break or the club-champs weekend. Press Generate: a two-phase algorithm assigns whole-week blocks fairly through the main body of the year, then equalises the tail day-by-day so nobody ends up with two extra shifts. Import an existing rotation from Excel and it extends seamlessly, keeping the same order. Preview as a draft, tweak individual assignments, confirm — every member's share stays even.

Opening + Closing Duty ChecklistA sticky checklist walks the on-duty operator through every arrival and departure task on every PIN unlock.

Each club configures its own arrival and departure task list (unlock cloakrooms, amp on, lights, count till). On every PIN unlock a sticky banner appears with the next task and a Done button. Petty-cash-linked tasks open the count modal inline with all 11 SA denominations. Amp Aux vs Amp Optical live in a mutex group so ticking one auto-unticks the other. Every tick is date-stamped, logged with the on-duty person and written to the club's Google Sheet.

💵 POS Petty Cash Drawer ControlEnd-of-shift denomination count, running float ledger, and auto-linked petty-cash purchases — no more R20 mysteries.

Count the drawer at close-down: enter the quantity per denomination (10c through R200), get a live variance chip against the expected balance. Every committee purchase paid petty-cash automatically deducts from the float. Exports as Excel with balance-brought-forward, PDF summary, or auto-syncs to Google Sheets. Duty-gated — no one on shift, no count.

🛡️ Approvals Queue & Fine-Grained PermissionsChat-flagged threads land in one queue with "I'm on this" claim — plus per-committee-member permission toggles.

When a chat message is flagged, it lands on every committee member's approvals tile. An explicit "I'm on this" claim button plus auto-claim on reply plus a 20-minute stale-timeout prevents two admins responding to the same conversation. The Approvers panel grants three toggle switches per committee member — Approvals (unlocks exec tiles), Super Admin (cross-club reads), Developer (dev console) — so a Bar Manager can settle petty cash and approve wallet transfers without full super-admin power. Server-side revoke bites immediately.

📈 Live Club Analytics DashboardBookings, coaching, memberships, revenue — with vs-prior-period deltas and one-click windows.

The committee dashboard has a sticky window picker (1D, 7D, 14D, 30D, 12M, YTD or Custom) that reflows a 6-tile KPI strip and four charts — court bookings stacked by type, coaching activity by coach, membership joiners vs churn, revenue by source. Deltas vs the same-length prior window make trends visible at a glance. Every metric ties back to the underlying table so numbers reconcile with the money trail.

👥 Subscriptions Console & Bulk Mark-PaidMaster-detail member hub — billing, cancellation, refunds, bulk email, atomic bulk mark-paid, full money trail.

The Subscriptions console is a member-management workspace: a filterable member list on the left, six detail sections on the right (profile, Google Contact diff, communications, subscription, money trail, household). Bulk-email up to 300 members from a Drive-stored template. PayFast cancellation refunds pro-rata to the wallet, writes both ledgers, resends the setup link — every action leaves an audit row. One bulk Mark-Paid catches every selected membership up to today, respecting each member's monthly, quarterly or annual cadence.

🔗 One-Click Google Workspace ConnectOne Google login unlocks Gmail sending, Contacts sync, Drive slip uploads and Calendar duty events.

The committee "Connect Google Workspace" button requests four scopes in one OAuth grant — contacts, gmail.send, drive.file and calendar.events. Every downstream feature that touches Google (branded emails, contacts sync, purchase-slip Drive uploads, duty roster Calendar events) auto-lights up. A per-service tick/cross strip on the committee page shows exactly what's enabled at a glance.

📊 Automatic Financial Books in Google SheetsEvery wallet top-up, lighting session, court fee, ball sale and membership payment auto-writes to your club's Google Sheet.

One connect click and Mzansi Court Q creates a per-year workbook with 13+ tabs — Wallet Top-ups, Lighting Ledger, Ball Sales, Court Fees, Membership Income, Member Roster, POS Sales and more — with headers, colours, date formats and conditional formatting already applied. Every transaction fires a fire-and-forget row so the treasurer's books are always live. If a write fails it's logged to a failures table and a banner nudges the admin — no lost audit trail. Purchase slips upload to Google Drive under the club's own account.

📇 Google Contacts SyncEvery member auto-appears in your club Gmail contacts — with membership status, join date and birthday.

Every club member syncs into your Google Contacts one-way, with ordered custom fields (membership type, status, payment status, member number, join date, age category, activities). Active members' birthdays get celebrated automatically; lapsed members drop out of birthday pings. Junior privacy rules keep parents' details off children's contact cards. Includes rate-limit-aware queueing, daily reconciliation, orphan cleanup and a dead-letter inbox for anything Google rejects.

Group 07

Facilities & Access 6

🔓 Open the Gate From Your PhoneTap the lock button in the header — no keypad, no card, no forgotten codes.

The lock button in the portal header opens every gate the member is allowed through, with a live thumbs-up / thumbs-down feedback loop so the system knows when the gate actually opened. Parents of junior programme kids can open the gate three hours either side of their child's session automatically. Membership tiers gate access to different doors on different days; visitors get 24-hour codes after paying online.

🔑 Time-Limited Keypad PINsEvery booking auto-issues a keypad PIN valid for exactly the right window; workers get cyclic recurring PINs.

When a member books a court the system generates a 6-digit PIN for parking, pedestrian gate and toilet all day plus the specific court between the booking hours — pushed to TTLock keypads and delivered via WhatsApp. Domestic workers and contractors get recurring cyclic PINs (Mon/Wed/Fri, 08:00–14:00) that expire on renewal. Committee can rotate any code in one tap and see every entry attempt in the audit log.

💡 Prepaid Court Lighting You ControlTop up once, tap to switch on your court lights, and only pay for the minutes you actually use.

The club's floodlights are wired straight into the app via Shelly Cloud. Top up your prepaid balance via Yoco, then tap a court to turn its lights on. Set a personal auto-off timer so you never leave them burning, and a system safety-net switches everything off at 11pm regardless. Every session is logged, every minute deducted transparently, and coaches get free lighting automatically so they never break stride mid-lesson.

💳 Committee Sells Lighting At the CounterTake a Yoco card payment at the clubhouse, or redeem legacy paper tokens — same ledger, no gaps.

For members who prefer paying in person, committee can sell prepaid lighting via the physical Yoco card machine. The same LT reference flows through the payment device, the Google Sheet ledger and the member's balance — no reconciliation gap. Old paper tokens can be redeemed at the counter too (one token equals 60 minutes) and the audit trail matches the app-based top-ups perfectly.

📶 WiFi Vouchers Sold At the BarSell Ubiquiti WiFi vouchers as a POS item — keys are WhatsApp'd and emailed instantly, with a suspicious-use monitor.

Committee generates or uploads a batch of WiFi voucher keys, tags each item with data or duration, and sells them at the POS like any other product. The key is delivered instantly by WhatsApp and email with the iPhone Private-Wi-Fi-Address tip baked in. Every 15 minutes a three-window monitor flags any voucher used across multiple MACs — one gentle Ace nudge to the committee inbox, never a spam of alerts. Committee can politely warn the buyer, disable the voucher, or dismiss the flag with a note.

🛜 My WiFi — Self-Service Voucher PurchaseBuy WiFi with Yoco or add to your tab, request a free replacement key once a week, see device usage per voucher.

Members buy WiFi vouchers from their portal — pay now via Yoco link, or add to an open tab (active memberships only). Request a free replacement key once every 7 days if it stops working. My Active Vouchers shows device count and data used per voucher, so members see the transparency behind their code.

Group 08

Member & Community Life 10

🏠 Personalised Member DashboardOne live home screen — wallet balance, next bookings with weather, latest badges, unread notifications, club news.

Every member lands on a live dashboard that pulls their wallet balance, prepaid lights, next three court bookings with weather chips, latest badges, pending polls, unread notifications and rotating Events/News/Sponsors cards. Key values in every notification (times, courts, dates, rands) auto-bold so the eye finds them without effort. The badge row auto-pans left-and-right so achievements are always in view, and a compact membership card shows exactly when the next renewal is due.

🙋 Rich Member ProfilePhoto, DOB, skill level, preferred hand, preferred days & times, next-of-kin — all in one editor.

The header avatar (initials or photo) opens a scrollable editor for every profile field: name, email, gender, date of birth, skill level, preferred hand, preferred days of the week, preferred time window and next-of-kin contact for emergencies. Phone changes trigger an OTP re-verify to keep WhatsApp routing accurate. Profile photo is client-side compressed before upload so even a fat SLR JPEG lands as a small blob.

🔒 Privacy Preferences That Actually WorkBlur your name in leaderboards, opt out of WhatsApp club messages, choose your spotlight — one preferences modal.

Every member gets a preferences modal that toggles game-history privacy, leaderboard privacy, achievement privacy and WhatsApp opt-out. Opt out and your name is blurred everywhere it renders — no exceptions, no leaks. Committee still gets emergency and duty messages through, but sales pitches stop. Emergency contact details are stripped from every members-facing endpoint and only surface to committee via a dedicated authenticated call.

🗝️ Passwordless First LoginNew members log in with their email and set their own password — no shared club default.

Members log in with their email (or legacy username) and either their password or a temporary password requested via the login page. First-time users get a provisional session that walks them through setting their own password. Committee can reset any member's password from the admin panel with a 4-digit PIN.

🪪 My Membership Self-ServiceSee exactly what tier you're on, when it renews, and pay outstanding fees from your phone.

Each member sees a colour-coded membership card with type, status, member number and Valid Until date. If a payment is pending and their e-wallet covers it, one tap pays. Lapsed or pending statuses show an amber dormant banner with a Contact Club button. Family members appear as sub-profiles they can add, edit or remove.

👥 Player DirectoryFind any player at your club — search by name, filter by gender or age, tap through to their profile.

A searchable, filterable roster of every active member. Chip filters cover gender (M / F) and age brackets (U18, 18-30, 31-45, 46-60, 60+) with instant client-side filtering. Tap any card to open a read-only profile with stats, recent games and badges — privacy preferences let each member choose exactly which slices are visible to others.

📣 Community Feed — Events, News, Sponsors, MarketplaceOne elegant feed for club events, news, sponsors and members' for-sale items — with RSVPs and food polls baked in.

The community feed is your club's Instagram plus WhatsApp bulletin board — event cards with cover images, hero date badges, subtitle ribbons; news articles with rich sections; sponsor showcases; a members' marketplace for kit for sale. Committee builds posts with an AI Write button that drafts title, subtitle and sections in one go. RSVP polls (Yes/No/Maybe), food orders and singles/doubles/mixed event sign-ups with a partner search happen in-line, and the live tally edits itself in-place in the WhatsApp group.

🔍 Lost & FoundSnap a photo, describe the item, every member gets a push and Ace DM — claim it in one tap.

Members and committee alike can report a found item (racket, jacket, kids' shoes) with a client-resized photo, choose whether it's in the Lost & Found box or kept by the reporter, and every active member gets a push notification and Ace chat message. When the rightful owner taps Claim, the original reporter is notified via Ace. Every item and claim is logged in the club's Google Sheet for a permanent audit trail.

🚨 One-Tap Emergency AlertPanic, fire or medical alert reaches every committee member and the affected player's emergency contact instantly.

Three quick buttons — Panic, Fire, Medical — plus seven member-specific alerts (Minor Injury, Serious Injury, Missing Person, Theft, Unattended Child, Other) fire simultaneously via in-app Ace DM, WhatsApp to the committee group, and WhatsApp to the affected member's emergency contact. Every committee member gets a live dashboard banner with member details, phone numbers, next-of-kin and reporter identity. Committee can add live notes as the situation unfolds and mark it resolved — all parties are notified and the whole event is logged for compliance.

⚠️ Anonymous Rule-Infringement ReportsReport foot faults, wrong footwear or bad conduct anonymously — three reports nudge, five escalate to committee.

Every member can report a maintenance issue, a payment problem or a rule infringement from the portal side menu. Rule infringements are truly anonymous — your identity is never stored, never written to the sheet, never shown. Three reports of the same sub-type about the same member fire a friendly Ace nudge; five automatically create a committee task for a follow-up. Reports can even be about non-members (like a smoking visitor).

Group 09

Club Website, Growth & Trust 9

🌐 Bespoke Club WebsiteYour own site at yourclub.courtq.co.za — day & night themes, live stats, drag-in sections and in-page login.

Every club gets a public site on its own subdomain, styled to its palette, with sections the committee drags in — Hero, Live Stats, Memberships pricing, Events feed, News, Coaching, Gallery marquee, Facilities carousel, Contact & Map with Street View, FAQ. Members log in on the same page, join or add family members from a checkout drawer, and hit a moon toggle for full night-mode theming. Committee tweaks colours, section order and visibility with no code, and the AI Write button drafts copy.

💳 Membership Types BuilderDesign any membership tier — annual or monthly, with family discounts, feature gating and per-tier court perks.

Committee build unlimited membership types (Junior, Social Adult, Full Adult, Veteran, Coach, Complimentary…) with per-type colour, icon, target group, annual + monthly price, requires-approval flag, and a nine-toggle feature matrix that gates each portal section (Bookings, Chat, Wallet, Directory, Stats, Lost & Found, Reports, Tournaments). Pro-rata billing auto-calculates joining fees so new members pay only for the months they'll use. Family bundles support up to four sub-profiles with cheapest-first discount slots.

Club FAQ With AI Answers & Animated WalkthroughsLive-edited FAQ with tokens that refresh automatically — plus step-by-step phone mocks that show members exactly how to book.

The club FAQ page has an inline drag-and-drop editor with AI Write and Refine buttons. Answers can carry tokens like {{full_adult_annual}} or {{club_hours}} that auto-resolve to the current DB value — change one setting and every FAQ that references it refreshes overnight. Drop a walkthrough token and it renders as a collapsible animated mock with numbered steps, phone-nav frames and tap pulses so members see exactly which button to press. Every answer feeds Ace's knowledge bank so members asking on WhatsApp get the same information.

📄 Custom Pages & Downloadable PDFsAdd hand-crafted tabs to your club site — attach a designed PDF for one-click download.

Beyond the standard sections, committee can add fully custom pages (Club Guide, Junior Handbook, Constitution) via a paste-HTML editor with a live preview. Attach a hand-designed PDF and every "Save as PDF" call-to-action on the page auto-swaps to "Download PDF" serving the uploaded file instead of triggering browser print.

💾 Automatic Daily BackupsYour entire club backed up to your Google Drive every night at 4am — 30-day retention, one-command restore.

Every day at 04:00 SAST Mzansi packs the entire database — memberships, bookings, badges, chat, coaching, wallet, POS, everything — into a compressed JSON file and uploads it to the club's Google Shared Drive with 30-day retention. Restore any snapshot with one script; the safety net that lets clubs sleep at night.

🚀 Self-Service Club Registration WizardNew clubs onboard themselves in a 2-step wizard — no sales call, no waiting.

The registration wizard takes 60 seconds: Step 1 club name plus optional city and courts, Step 2 admin name, email and password. On submit, the club is live immediately (no "pending review" hold), four default membership types are seeded, and the admin gets a 7-day session. Referral codes are captured with live validation as the operator types them.

🤝 Refer a Club, Get 3 Months OffShare your club's referral code — the new club gets 50% off Mzansi for 3 months, and you get the credit.

Every club, academy and coach has a 6-character referral code. Share it via the Refer a Club burger-menu modal — the new club that signs up with it gets a 3-month 50%-off waiver on their Mzansi Court Q subscription. The wizard validates codes live as they're typed, and the referral is captured to the audit trail on signup.

👋 Try Social Day as a Guest — No SignupProspective clubs can drive the whole Social Day app anonymously — nothing saves until you register.

Visit mzansicourtq.co.za without logging in and Social Day boots in Guest Mode with 4 fake courts, empty rosters and a persistent "nothing is saved" banner. Add guests, run the queue, try suggestions, see the flow — decide if it's for you before committing. Every unsafe action is stubbed; every dangerous button is hidden.

📺 Bar TV & Live Specials TickerA cinematic clubhouse display — duty photo carousel, checked-in players, weather, and live POS order pop-ups.

Cast a Chrome tab to any Android TV behind the bar and Mzansi paints a rotating welcome — the duty person's photo carousel, live checked-in count from Social Day, weather bands for today, and a scrolling ticker of bar specials + community ads. When the operator opens a POS tab, the TV auto-switches to a live line-by-line order view; when the sale settles, it holds for 12 seconds then reverts. Bar specials with active_from/active_to windows scroll automatically alongside community adverts.

Group 10

Tournaments & Leagues 10

🏆 Club Champs — Bracket to Prize MoneyAuto-seeding, single-/double-elim + round-robin, live leaderboard, sponsor prize payouts — one screen.

Full bracket engine covering single-elim, double-elim with Grand Final Reset, round-robin and backdraw draws — seeded automatically from your leaderboard + last year's standings. Registration collects entry fees via Yoco, brackets render live, and once the tournament ends, prize payouts run against a per-club Yoco payout wallet with receipt emails to every winner. Everything visible to members on their own Club Champs page throughout the event.

📅 Court Auto-SchedulerPoint-and-click scheduler that respects real court availability across all your divisions.

Once your draws are locked, one tap runs the scheduler across every division at once — it walks the bracket in the right order (round 1 before quarters), respects real court availability (including social bookings, coaching and maintenance blocks), packs matches across your chosen play window, and emits a printable draw sheet. Every match gets a court + a time, and the committee sees a preview before commit so nothing surprises anyone on match day.

⚠️ Live Clash DetectionThe bracket watches itself — as scores land, retirements, weather cancellations and overruns raise clashes in real time.

The moment a result is entered, the scheduler re-checks every downstream match. If a semi-final now clashes with a re-scheduled quarter, both matches surface on a Conflicts tab with a proposed resolution (move the QF to court B at 15:30, keep the SF where it is). Retirements, weather cancellations, timing overruns and player double-bookings all raise the same alert — one click to accept the proposed fix, or drag the match to a slot you prefer. Every change fires a WA nudge to the affected players.

🗓️ Initial Availability CaptureBefore the draw is locked, every registrant flags their blackout dates + preferred play windows.

The registration form asks each entrant to mark their unavailable dates + preferred play windows for the tournament period (e.g. "any weekday evening", "not Saturday morning"). The auto-scheduler treats those as hard constraints on the first pass and soft preferences on tighter days — so nobody's first match lands on the one afternoon they said they couldn't be there. Missing responses trigger a WA nudge before the draw locks.

🏅 Seed Challenges After the ChampsMembers can challenge the seeds set by the champs — resolved in a mini-bracket that feeds next year's ranking.

Once the club champs finish, seeds are provisional for two weeks — any member ranked below can post a Seed Challenge against the person one place above them. Challenges resolve in best-of-three fixture windows the committee announces; the winner takes the seed. Feeds directly into next year's tournament seeding and the interclub leaderboard.

League ManagementRun weekly interclub leagues — fixtures, team rosters, standings, per-league WhatsApp group — all in one place.

Register a league team with its captain + roster (players from any Mzansi Court Q club welcome), the fixtures generator lays out weekly matches across the season, and a live standings table updates the moment scores are captured. Each league gets its own WhatsApp group linked to Ace, so team announcements, availability polls and match reminders happen in the same thread the players already use. Home + away tracking, walkover handling, tiebreak rules and finals qualification all built in.

📝 On-Court Score Entry & StandingsPlayers enter scores from the app — brackets, leaderboards and standings update live.

The player app has a Score screen for every match they're playing in — set-by-set entry with a tap, both players confirm the result, and the bracket / league table updates instantly. No paper draw sheets, no committee volunteer typing scores at the end of the day. Disputes route to the tournament referee for adjudication with the full audit history preserved.

🍔 Match-Day Food OrderingPre-order food + drinks for match day — kitchen sees quantities upfront, players collect at the counter.

Each entrant gets a Food Order popup after registration — pre-order breakfast, lunch or snacks for their match times. The kitchen sees quantities the day before, so nothing is over-ordered or under-stocked. Members collect at the counter, tabs settle to their wallet, and cash is optional.

📺 Cast-to-TV Tournament DisplayFull-screen bracket + leaderboard + schedule rotation on any TV via Chrome tab mirroring.

Open the tournament TV surface in a Chrome tab on the club's central device and cast to any Android TV in the room. Rotates through Overview stats (registrants / divisions / matches played / % complete), per-division bracket with top-8 leaderboard, and today's schedule + division standings. Refreshes over WebSocket so the room sees results the moment they're entered.

🎛️ Tournaments, League Teams & Club Champs HubOne committee page listing every past + upcoming tournament, league season and champs across the club.

The committee's competitions hub — every tournament, league season and club-champs event past + upcoming, with WA-group links, registration counts, scheduler status and prize-payout state on one page. Link a WA group to a competition and it appears in the Campaign Composer's target picker automatically, so a "Round 3 reminder" blast is one click. Public share pages at /share/tournament/:id, /share/league-team/:id and /share/clubchamps/:id let non-members follow along too.

Group 11

Cross-Club Network 5

🤝 Social MixersHost inter-club mixers; visiting members earn stats that credit their home club.

Register a visiting player at the door in 15 seconds — their home club is auto-detected and the games they play tonight write to their permanent profile. Guest members appear in Social Day queues with a small home-club badge, so hosts know who they are and visitors leave with a night's worth of stats and any badges they earned. No manual data reconciliation between clubs.

🔄 Portable Player ProfilesWhen a member changes clubs, their entire history moves with them.

A player's PowerScore, badge case, win streaks, court time, partnership history and coaching record follow the member across clubs. Transfer flow is one committee approval — no CSV export, no lost history, no starting from scratch. Members keep the account they've had for years; clubs get transparency into a joiner's real record instead of a self-declared rating.

🏆 Tournaments & Leagues Across ClubsRun cross-club leagues with shared brackets, scoring and ranking.

The tournament engine isn't restricted to your own membership — invite players from any Mzansi Court Q club into a bracket, and their results feed the same unified profile. League teams can carry players from multiple clubs, with fixtures, live scoring, and ranking tables that all clubs can view. Perfect for interclub Wednesday leagues and regional summer socials.

📊 Unified Stats SystemOne profile, all your tennis — regardless of where you played.

Home-club games, mixers, guest play, tournaments and transfers all contribute to a single stats profile shared server-side and client-side. 42 badges across 9 categories — Total Matches, Win Streaks, Court Time, Partnerships, Social Play, Court Royalty and more. Once earned, badges never un-earn, even if your stats dip. A player at three clubs sees one leaderboard, not three.

🌍 The South African NetworkJoin a growing network of SA clubs sharing infrastructure and standards.

Every club on the platform shares the same underlying data model, payment rails, notification stack and security posture — so cross-club interactions Just Work. As more clubs join, the network compounds: more mixers to attend, more tournaments to enter, more coaches available, and a growing pool of playing partners for every member — without any single club having to build the plumbing.

Free · No signup required

Try the Social Day flow
right now, in your browser.

The core Social Day loop — add players, check members in, assign courts, run King of the Court / Singles / Doubles matches, add guests. Fully anonymous, everything stays in your browser (nothing hits our servers). Install it as a PWA on a club tablet and get a real feel for the Wednesday-night flow — before you commit to anything.

✅ Works in the sandbox
  • Player check-in + check-out
  • Guest add + reuse
  • Court assignments — 4-court demo layout
  • Match modes: King of the Court, Singles, Doubles, Rookie
  • Match + court settings, suggestion engine, sounds
  • Installable as a PWA on tablet + phone
🔒 Needs a real club subscription
  • Real member database + auto-lookup
  • Floodlight control (Shelly hardware)
  • E-wallet + Yoco / PayFast payments
  • WhatsApp announcements + polls
  • Events, duty roster, ball sales, POS
  • Cross-device sync + audit history

Everything you do in the sandbox lives in your browser's local storage — reset any time. No account, no email captured. Just the tool you'd be paying for, unlocked to poke at.

Why Mzansi Court Q
Less Admin.
More Tennis.
⏱️ Saves TimeAutomate the admin that ate your committee's Sunday afternoons.

Duty roster generates itself and equalises shifts across the year. Renewal reminders fire on cron at 90/60/30/5-day thresholds without anyone remembering. WhatsApp announcements go through Campaign Composer with AI-drafted copy in one click. Membership signups, court bookings, coaching payments and ball sales all self-reconcile to the club Sheet. Volunteer treasurers report cutting weekly admin from 6 hours to under 90 minutes.

💳 Saves MoneyOne platform replaces 5+ apps. From R250/month, capped at R1,500.

Replace booking apps, POS apps, roster spreadsheets, WhatsApp automation tools, e-wallet plugins, tournament software and website builders with one platform. Member-tiered pricing starts at R250/month and is capped at R1,500 even for large clubs — VAT-inclusive. Yoco + PayFast processing fees pass through at cost; we take zero transaction fee. Referral programme knocks 50% off the base fee for three months per successful referral.

🏗️ Built for Volunteer ClubsSA clubs run on volunteers, not staff — every workflow assumes that.

Pay-to-play access codes so a guest can book, pay and let themselves in when nobody's at the club. Duty checklist prompts the on-duty committee member through arrival + departure tasks on every PIN unlock. Two-tier committee permissions so the treasurer can help without being handed the whole platform. Automatic Google Contacts sync so every committee member has the up-to-date roster on their phone. Every gotcha we've hit at a real Pretoria club is baked into a workflow.

🇿🇦 Made in South AfricaBy SA club managers, for SA clubs. Rand pricing, POPIA-first.

Built and run from South Africa by a committee member of an active Pretoria club. Local Yoco + PayFast integration, WhatsApp-first communication (because that's where South Africans live), Rand pricing, VAT-inclusive invoicing, POPIA-compliant by design (§19 security measures, 24-hour breach notification, right-to-be-forgotten export) and local support you can WhatsApp — the same number your members would. Not a repackaged American SaaS pretending to speak Afrikaans.

Success Stories
Trusted by South African Clubs
Eldoraigne Tennis Club Active

"Wanneer die app klaar is gaan die ding vir jou vra of jy onthou het om jou hol af te vee as jy by die badkamer uitkom. Of 'n distess call log as daar nie TP in die badkamer is nie"

👥 183 Members
🏟️ 5 Courts
50+ Years
View Club
Doringkloof Tennis Club Featured

"Dit is flippen awesome!"

👥 89 Members
🏟️ 6 Courts
40+ Years
View Club
South African Network Growing

"Join a thriving network of clubs sharing stats, members, and hosting social mixers. Connected, competitive, and collaborative tennis management."

📈 Expanding Daily
🌍 Nationwide Network
Active Community
Get Started

Ready to Streamline Your Club?

Join our growing network of South African clubs. First 10 clubs get 3 months' free base subscription plus setup fee waived when signing a 12-month agreement.

🚀 Loading launch counter…

View Plans