Inspiration

When we grow older we unfortunately tend to lose touch with our hobbies and real passions, concerned that they will not provide financial stability or that we can't improve. Our product aims to help with that issue.

What it does

Sota is a competitive matchmaking platform where amatuer players of any kind of sport or esport can find people of similar skill levels and play with real stakes to improve and provide for themselves.

How we built it

  • App: Expo (React Native, TypeScript) with Expo Router, Google sign-in through Supabase Auth, and Realtime so both phones update the moment a match settles.
  • Backend: Supabase Postgres with row-level security on every table. Match states (invited, live, verifying, settled, disputed) are enforced in SQL functions, so the app can never set a result itself. Money moves through a ledger that's only ever added to, never edited, with an 8% platform fee.
  • Ratings: Glicko-2 implemented in SQL, updated in the same transaction as the payout.
  • Verification: a pg_cron job polls the Clash Royale API every minute. For basketball, a Python FastAPI service runs a YOLOv8n model (ONNX) to detect the ball, rim and players, count a make when the ball drops through the rim, and credit it by shirt color.
  • Payments and identity: Stripe Identity (ID + selfie), Stripe Checkout deposits, and signed webhooks that are safe to receive twice.

Challenges we ran into

We ran into alot of issues with device compatibility with the technologies we were using, particularly expo. We also ran into a lot of issues regarding some of the api's we were using resulting in many interesting workarounds for verifying results.

Accomplishments that we're proud of

The whole flow that we envisioned runs correctly from end to end, challenge, stake, play, verify, payout, rating update.

What's next for sota

If this product has potential we see alot of ways for growth, expanding to new sports, creating new esports for this very purpose, organizing tournaments or amateur vs. professional events, and expanding the referee model test suite.

Built With

Share this project:

Updates

Submission history