← ProjectsCase Study

M-DEF

Lessons from an Early Badminton Analytics Engine

CategoryAnalytics
Status Archived
Stack Flutter · Supabase / Postgres
01 / Context

Overview & Problem

An early leaderboard and analytics platform built for recreational badminton leagues, providing dynamic player ratings and match statistics before being superseded by Majadu.

Tracking player standings across unstructured recreational matches required a dynamic ranking model before backend APIs were unified.

02 / System

Architecture

Flutter frontend client paired with Supabase / PostgreSQL backend, featuring a custom rating algorithm weighing win margins and inactivity decay.

03 / Decisions

Engineering Trade-offs

01

Inactivity decay penalty

Rankings automatically decayed when players stopped competing, preventing inactive players from occupying top leaderboard positions indefinitely.

02

Retirement & algorithm migration

When Majadu was established, M-DEF was retired and its core rating algorithms were extracted and rewritten in Go for Majadu API.

04 / Outcome

Key Takeaway

Retiring early standalone experiments in favor of unified backend APIs keeps system maintenance low while preserving core algorithm IP.

Explore more systems in the Qouver umbrella.