Back

Divisioning System

A web-based platform for Special Olympics Badminton events — structured athlete assessment, real-time scoring, POMI tracking, and divisioning management.

v1.0.0 · Special Olympics Badminton

System Overview

What the Divisioning System does and why it exists

Purpose

The Divisioning System is built for badminton events in Special Olympics. It facilitates the complete divisioning process using the Badminton Divisioning Assessment Form (BADAF), enabling observers to assess athletes in real-time, track scores live, issue POMI cards for disciplinary actions, and generate category-based leaderboards for final divisioning review.

System Objectives
  • Provide real-time BADAF level tracking
  • Maintain live records of athlete assessments for administrative oversight
  • Allow observers to issue and track POMI (Penalties of Misconduct Indicators)
  • Generate category-based leaderboards for divisioning
  • Support structured reporting and Excel exports for divisioning review
Assessment Model
  • Each observer submits a Divisioning Score (0–10) per athlete
  • Observers may submit comments with each record
  • Observers cannot edit after submission
  • Admin may edit any score, with mandatory audit logging
  • Divisioning Score = total of observer scores ÷ number of matches played

User Roles

Two distinct roles with clearly separated permissions

Admin

USD / TD of Event
  • Create and manage events, athletes, courts, categories
  • Create and manage observer accounts
  • Assign athletes to matches and courts
  • Assign multiple observers per court
  • Monitor live scoring records in real-time
  • View calculated Divisioning Scores
  • Edit submitted scores (with mandatory audit log)
  • View observer submission status per athlete
  • Issue and manage POMI cards
  • Generate reports and Excel exports
  • View full audit trail of all changes

Observer

Court-assigned assessor
  • Assigned to a specific court
  • View current and upcoming matches on their court
  • Record assessments only for athletes assigned to their court
  • Submit Divisioning Score (0–10) per athlete
  • Submit optional comments with each record
  • Cannot edit scores after submission
  • Issue POMI cards (with court auto-detected)
  • Cannot view other observers' live scores
  • Cannot view leaderboard or dashboard

Event Workflow

Step-by-step flow from event setup to final divisioning

1
Create Event

Admin creates a new event with name, date, and location. Sets status to Setup.

2
Configure Categories

Define competition categories: Men's Singles (MS), Women's Singles (WS), Men's Doubles (MD), Women's Doubles (WD), Mixed Doubles (XD), etc.

3
Register Athletes

Add athletes individually or use bulk import. Each athlete is assigned to a category, delegation, and gender.

4
Set Up Courts & Observers

Create court locations, create observer accounts, and assign multiple observers per court.

5
Schedule Matches

Create matches with round/match numbers, assign to courts, and assign athletes to each match. Set event status to Active.

6
Live Scoring

Observers log in on their devices, see their assigned court's current match, and submit scores (0–10) for each athlete. Admin monitors everything live on the dashboard.

7
Review & Finalize

Admin reviews leaderboard, checks observer submission completeness, edits scores if needed (with audit trail), and issues POMI cards for misconduct.

8
Export Reports

Generate Excel exports of scores, leaderboards, POMI records, and audit logs. Print athlete and event summary reports. Set event to Completed.

Event Management

Full lifecycle management for badminton divisioning events

Event Lifecycle
  • Create events with name, date, and location
  • Three statuses: SetupActiveCompleted
  • All related data (athletes, matches, scores) scoped to the event
  • Multiple events can exist simultaneously
Categories
  • Define custom competition categories per event
  • Athletes are grouped by category in leaderboard
  • Supports standard badminton divisions (MS, WS, MD, WD, XD)
  • Category-based filtering throughout the system
Athlete Management
  • Individual or bulk import of athletes
  • Fields: first name, last name, delegation, gender, category
  • Athletes automatically linked as individuals for POMI tracking
  • Full CRUD operations with edit and delete
Court & Match Structure
  • Named courts with location descriptions
  • Courts can be activated/deactivated during event
  • Matches have round number, match number, court assignment
  • Match statuses: Scheduled → In Progress → Completed/Cancelled
  • Athletes formally assigned to specific matches
Observer Management
  • Create observer accounts with username and password
  • Assign observers to specific courts per event
  • Multiple observers can be assigned to the same court
  • Observers can only score athletes on their assigned court
  • Activate/deactivate observer accounts
  • WhatsApp auto-login links — send observers a single-use, time-limited link that signs them in with one tap (no password)
Live Dashboard
  • Real-time event statistics (athletes, matches, scores, observers)
  • Court status: active/idle with observer count
  • Observer submission tracking per athlete per match
  • Shows: observers assigned vs. submitted, incomplete indicators
  • Calculated Divisioning Score per athlete
  • Live activity feed of recent score submissions

Scoring & Assessment

The core divisioning assessment based on the BADAF model

Observer Scoring
  • Observers see only their assigned court's current/upcoming match
  • Score each athlete from 0 to 10 (decimal supported)
  • Optional comment/notes field per score submission
  • One-time submission: observers cannot edit after submitting
  • Duplicate prevention enforced at database level
  • Observer must be assigned to the match's court to score
Divisioning Score Formula

The official divisioning score calculation:

Divisioning Score = Total of all observer scores ÷ Number of matches played

  • Aggregates all scores from all observers across all matches
  • Divides by the number of distinct matches the athlete has played
  • Displayed on admin dashboard and leaderboard
Real-Time Updates
  • Scores broadcast instantly via Socket.IO to admin dashboard
  • Leaderboard updates automatically on new score submissions
  • Court status and submission tracking refresh in real-time
  • Match creation and status changes broadcast to all connected clients
  • Observer isolation: observer devices do NOT see other observers' live scores
Admin Score Editing
  • Admins can edit any submitted score
  • Mandatory reason required for every edit
  • Original value, new value, editor, and timestamp logged
  • Full audit trail preserved permanently
  • Edits broadcast via Socket.IO to update dashboards in real-time
Admin Dashboard Display

The admin dashboard shows per-athlete, per-match submission tracking including: calculated Divisioning Score, number of observers assigned, number of observers who have submitted, and a clear indication if submissions are incomplete. Scores are visible live only on the admin dashboard. Observer devices do not display live updates from other observers.

POMI System

Penalties of Misconduct Indicators — full tracking and upgrade management

POMI Types & Hierarchy

Five severity levels in ascending order:

Green — Level 1 (lowest)
Blue — Level 2
Yellow — Level 3
Red — Level 4
Black — Level 5 (highest)
Issuance & Upgrade Rules
  • POMI can be issued to athletes, coaches, and team managers
  • A POMI type can only be issued once per individual per event
  • Subsequent disciplinary actions must be handled as upgrades
  • Upgrades can only move up the hierarchy (e.g., Green → Blue, never down)
  • POMI remains attached to the individual throughout the entire event
  • Reason is required for all upgrades
POMI Action Logging

All POMI actions are permanently logged with:

  • Individual — who received the POMI
  • Observer / Issuer — who issued or upgraded
  • Court — where the POMI was issued
  • Timestamp — when the action occurred
  • POMI type — the card level issued
  • Upgrade reference — previous type (on upgrades)
  • Reason — mandatory for upgrades
  • Notes — optional additional context
Non-Athlete Individuals
  • Add coaches, team managers, and other individuals
  • POMI can be issued to any individual, not just athletes
  • Individuals are tracked with: name, role, delegation
  • Athletes are automatically linked as individuals on creation
  • POMI indicators appear on the leaderboard for athletes

Leaderboard

Category-based rankings with comprehensive status indicators

Leaderboard Display

The category-based leaderboard shows for each athlete:

  • Rank — position within category
  • Athlete name — last name, first name
  • Category — competition division
  • Delegation — representing organization
  • Divisioning Score — calculated score
  • Matches played — number of matches assessed
  • Min / Max score — score range from observers
  • Observer submission status — submitted / assigned count
  • POMI indicator — active POMI card badge
Filtering & Live Updates
  • Filter by category using tab navigation
  • "All" view shows every athlete across all categories
  • Ranked by Divisioning Score (descending)
  • Automatically refreshes on new score submissions
  • Real-time Socket.IO updates when leaderboard data changes
  • Consistent scoring formula: total scores ÷ matches played

Reporting & Export

Comprehensive export and print capabilities for divisioning review

Excel Exports
  • Divisioning Scores Export — all scores by match, round, court, athlete, observer
  • Leaderboard Export — "All Athletes" sheet + per-category sheets with rank, scores, min/max
  • POMI Records Export — all POMI cards with name, role, delegation, type, issuer, dates
  • Audit Log Export — all admin edits with old/new values, reasons, timestamps
Printable Reports
  • Athlete Summary Report — individual athlete with all scores, average, and POMI status
  • Event Summary Report — complete event overview with categories, athletes, matches, leaderboard, POMI count
  • POMI History Report — full POMI records with issuance/upgrade history
  • Print-optimized CSS for clean printout formatting

Audit & Data Integrity

Complete traceability and tamper-proof record keeping

Timestamping

All submissions, edits, and POMI actions are automatically timestamped. Every record includes creation time and the acting user.

Immutable Submissions

Observers cannot edit or delete scores after submission. Only admins can modify records, and every modification requires a written reason.

Full Audit Trail

Admin score edits log: original value, new value, editor identity, timestamp, and mandatory reason. Browsable, filterable, and exportable.

POMI Audit Log

Every POMI issuance and upgrade is permanently logged with the individual, issuer, court, timestamp, POMI type, upgrade reference (previous type), reason, and optional notes. History is viewable per individual.

Authentication & Authorization
  • Session-based authentication with bcrypt password hashing
  • Role-based access control: admin, observer
  • Observers restricted to their assigned court only
  • Secure HTTP-only session cookies
  • Auto-expiry of sessions after 24 hours

Technical Architecture

Deployment model and technology stack

Deployment Model
  • Web-based system accessible from any browser
  • Operates on a dedicated local network within the venue
  • No internet connection required for operation
  • Real-time synchronization between courts and admin dashboard
  • All data stored locally on the server (SQLite)
  • Listens on all network interfaces (0.0.0.0)
Offline-Ready

Fully self-contained with no external CDN dependencies at runtime. All assets served locally from node_modules.

Responsive

Mobile-friendly design with collapsible sidebar, responsive grids, and touch-optimized observer scoring interface.