Private web app for managing padel groups and running two tournament formats:
Americanofor4or8playersCupfor8players with preliminary rounds and knockout finals
Production: padelrun.de
- Private groups with member-based visibility
- Multiple tournaments per group
- Group admins and global super-admins
- Google sign-in via Clerk
- Convex-backed live data flow
- Match result entry with admin override
- Live standings and partner/opponent stats
- Backoffice for global permissions and orphaned data cleanup
- Supported player counts:
4or8 - Every player partners with every other player exactly once
- Opponent repetition is minimized
- Each match totals
32points 16:16draws are allowed- Standings are sorted by:
- points
- wins
- point differential
- Exactly
8players 5preliminary rounds- Semifinals:
1 + 8vs2 + 73 + 6vs4 + 5
- Final and bronze match
- Knockout matches cannot end undecided:
16:16is allowed- a winner must still be selected
BunTypeScriptTanStack StartTanStack RouterConvexClerkTailwind CSSVercel
BunNode.js- Convex and Clerk project access
Create .env.local with the app and Convex values used by the local dev setup, for example:
CONVEX_DEPLOYMENT=dev:your-deployment
VITE_CONVEX_URL=https://your-deployment.convex.cloud
VITE_CONVEX_SITE_URL=https://your-deployment.convex.site
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...Convex deployment env also needs:
CLERK_JWT_ISSUER_DOMAIN=https://your-clerk-domain
CLERK_WEBHOOK_SECRET=whsec_...
SUPERADMIN_CLERK_IDS=user_...bun installbun run devUseful commands:
bun run lint
bunx tsc --noEmit
bun test
bun run build- Frontend is deployed on Vercel
- Backend is deployed on Convex
- Clerk production webhooks must point to:
https://<your-convex-site>.convex.site/clerk-users-webhook
SUPERADMIN_CLERK_IDSis only used as bootstrap/emergency access- regular super-admin management happens in the app backoffice
- This repository is intentionally private
- generated output and local browser automation artifacts are ignored