New player? Register here
Setting up a new club? Register your club
Terms · Privacy · Disclaimer
build: loading…
Already registered? Log in
Setting up a new club? Register your club
Already registered? Log in
Joining as a player? Register as a player
Enter your email and we'll send you a link to reset your password.
Signed in as — · Log out
Dashboard
Total Summary
Profit by Day
Bookings
Votes
Schedule
Cost Management
🏛️ Monthly Fixed Costs — facility memberships / direct debits
Each entry is a recurring monthly amount (e.g. £30/month gym membership for an organizer). The total for the viewed month is divided evenly across that month's sessions and added to each day's expenses as Fixed Cost. Players do not pay it — the club absorbs it, so profit drops accordingly.
Record Costs
History
Players
Active Players
Payments
Outstanding Dues — by Player
💳 Payments Made
Reminders
IONOS Hosting → Cron Jobs usually offers two flavours.
Pick the one that matches your hosting plan — the URLs below are pre-filled
with the auto-generated cron_secret
from Settings, so they should work as-is.
1. IONOS Control Panel → Hosting → pick your domain
2. Find Cron Jobs (sometimes under Tools / Tasks)
3. Click Create cron job → choose URL as the type
4. Paste one of the URLs above, set the time, save
5. Repeat for the second URL
The "Daily Game Post" URL omits the date — the server defaults to today, which is what you want for an evening cron.
$(date +%Y-%m-%d) to inject today's date — Unix cron's shell handles that. (Web cron can't, which is why Option A omits the date.)
WHATSAPP_* entries from the audit log. If your IONOS cron is set up correctly, you'll see new WHATSAPP_DAILY and WHATSAPP_REMINDER rows every evening. No entries = cron isn't reaching the endpoint.
Outstanding Dues (Manual WhatsApp)
💬 Feedback & Chat
Audit Log
Settings
💳 Stripe
📱 Digital Wallets
Paste payment links that support Google Pay / Apple Pay. These appear as branded buttons on the player Payments page. A single Stripe payment link works for both if your Stripe account has digital wallets enabled.
🎮 Game
🏦 Bank / UPI
🏋️ Leisure Club Booking
Save your Better Leisure login so the Court Finder can auto-fill your postcode and you can copy credentials when booking.
💬 Twilio WhatsApp
Required for automated WhatsApp messages. Get credentials at console.twilio.com. For testing, use Twilio's free WhatsApp sandbox — players join by sending join <sandbox keyword> to the sandbox number once.
https://wa.me/14155238886?text=join%20<your-keyword>. The SPA renders a QR for this URL in Reminders, Payments and after-booking confirmations.data:image/... URI or a hosted image URL)
🛠️ Data Tools
🎾 Racket Re-String Orders
Live queue of players' racket re-string orders. Update status as you progress them.
🩺 Diagnose User — resolve "session expired" loops
Enter a user's email to see why they may be hitting auth issues (inactive account, missing player record, duplicate rows, expired tokens, etc).
📋 Subscription Plans
Set the membership fee and per-game surcharge for each plan. The surcharge is added on top of each player's base split cost per game (e.g. 10% → player pays base split + 10%).
No membership fee — players only pay per game.
🏢 Clubs
Create clubs so players can self-select during registration. Each club can have its own subscription pricing and prepay surcharge.
⚙️ Per-Club Pricing
Override global subscription fees and prepay surcharge for a specific club. Leave at 0 to use global defaults.
Daily Post
Assessment
🎥 Training Library
Watch coaching tutorials and upload your own gameplay for review.
📚 Tutorials
🎯 My Gameplay
🔑 Saved Logins
These credentials are sent to the Python fetch service when you trigger a fetch using a specific account. Storage is base64-obfuscated, not strongly encrypted — only add credentials you have already shared with your fetch service.