Skip to content
Thanyapisit Buaprakhong
All projects

Competitive performance platform

OWTH Performance OS

Verified Overwatch role leaderboards with traceable match evidence for Thailand's academy community.

Project
Own product
Role
Product design, full-stack engineering, and data workflow
Focus
Performance analytics, Evidence workflow, Role-based access
Stack
Next.js 16, React 19, TypeScript, Supabase, Tailwind CSS 4, TUS uploads, Node.js worker
OWTH Performance OS leaderboard and player performance interface
Public landing page connecting the academy record to verified competitive evidence.
OWTH role leaderboards for tank, damage, and support players
Role-scoped public leaderboards ordered by the current career record.
OWTH match analysis with map results and performance dimensions
Match analysis combines map results, ratings, and lobby-wide performance dimensions.
OWTH player profile with hero and performance statistics
Protected player intelligence keeps detailed hero and rating evidence in one view.

The project

OWTH turns approved Workshop logs into role-specific Rating, ordered career MMR, and a record of the Map evidence behind both. The public view surfaces current standings, while protected player and admin workspaces keep detailed history and review tools scoped to the right users.

  • Separates contextual role Rating from career MMR so each number answers a clear performance question.
  • Requires admin approval before uploaded Workshop evidence enters the processing pipeline.
  • Connects standings to verified Map counts and traceable match records instead of opaque scores.

Product flow

How it works

  1. 01

    Players upload large Workshop logs directly to private storage through resumable transfers.

  2. 02

    User uploads wait for admin approval; approved jobs are claimed by a bounded processing worker.

  3. 03

    Processed maps update role Rating and ordered career MMR snapshots.

  4. 04

    Public standings stay connected to verified map counts and match records.

System design

How it was built

01

Designed separate Rating and MMR models so current role performance and long-term progression remain understandable.

02

Built a resumable TUS upload path and a leased Node.js worker that streams, parses, rates, and writes match evidence idempotently.

03

Enforced user, admin, and superadmin boundaries with server-side authorization and Supabase Row Level Security.