Every mat.
Every point.
One console.
The live operations console for combat and team sport tournaments. Assign officials, score bouts in real time across every mat, and publish audience boards — from the same system that holds your athletes, events, and entries.
Federations, clubs, and venues are provisioned by the platform team — Starter, Pro, and Federation plans map to real feature gates in the product.
Audience board · live replica
Simulated boutMat A · Senior · 68 kg
Match #1284
Red corner
A. Deshmukh
Kolhapur Akhada
Blue corner
R. Patil
Pune Combat Club
Point Stream · Live scoring · Mardani
Red +1 · Jab combo
Socket stream
/red-blue-fight
- updateScoreroom:match#1284red +1
- updateScoreroom:match#1284blue +2
- updateScoreroom:match#1284blue +1
Coverage, measured from the product catalog
6
Sport modules
Mardani, Traditional, Combat hub, Kabaddi, Football, Volleyball
9
Combat disciplines
One shared bout pipeline, per-sport rounds and timers
15
Operational roles
From master admin to punch officials, each with its own surface
4
Public surfaces per match
Audience board, venue TV wall, OBS overlay, fan companion
3
Plan tiers
Feature gates enforced server-side and fail closed
The product
Four surfaces, one match state
A bout is scored once and read everywhere. Pick a surface to see the interface the product actually ships for that role.
fight_admin · game_admin
The problem
Paper cards and a whiteboard mean the score on the wall is always a few points behind the mat.
In the console
The operator board is the source of truth for a bout. Start, pause, and finish drive the clock; every point lands in the match room within a tick.
- Timer + rounds
- Warnings and states
- Result persistence
Mat A · Senior · 68 kg
Match #1284
Red corner
A. Deshmukh
Kolhapur Akhada
Blue corner
R. Patil
Pune Combat Club
Point Stream · Live scoring · Mardani
Red +1 · Jab combo
Officials
Locked- Red corner
S. Bhosale
red_referee
- Blue corner
N. Chavan
blue_referee
- Head official
D. Rane
head_referee
Unassigned corners cannot score. Every join is re-authorised against the assignment before a point is accepted.
Multi-mat operations
Four mats running at once, from one desk
A federation day is parallel by nature. The control room treats mats as first-class: each one carries its own queue, officials, and board, and every point still lands in the same database.
Select a mat on the floor or in the wall to inspect it.
Control room
Multi-mat live wall
Auto-refresh 15s · score reconcile compares board state against the database
Mat A
Mardani bout in progress. The audience board and OBS overlay for this mat are already published.
mardani · match #1284 · queue 6
How a bout moves
The five-step loop operators already run
Nothing here is aspirational — it is the sequence the console enforces, from creating the card to writing the result.
Step 01 · Set up the card
New bout
Athletes come from the org roster
- Sport
- Mardani
- Category
- Senior · 68 kg
- Red corner
- A. Deshmukh · Kolhapur Akhada
- Blue corner
- R. Patil · Pune Combat Club
- Bout time
- 80 s · 1 round
- Mat
- Mat A
- 01
Set up the card
Create the bout or team fixture — corners, category, weight class, and the athletes pulled from your roster rather than retyped.
POST /api/fight/add-fight-match
New bout
Athletes come from the org roster
- Sport
- Mardani
- Category
- Senior · 68 kg
- Red corner
- A. Deshmukh · Kolhapur Akhada
- Blue corner
- R. Patil · Pune Combat Club
- Bout time
- 80 s · 1 round
- Mat
- Mat A
- 02
Assign the officials
Lock the red and blue corners plus an optional head official. Until the corners are filled, the bout cannot enter the queue and nobody can score it.
POST /api/assignments/set
Officials
Locked- Red corner
S. Bhosale
red_referee
- Blue corner
N. Chavan
blue_referee
- Head official
D. Rane
head_referee
Unassigned corners cannot score. Every join is re-authorised against the assignment before a point is accepted.
- 03
Queue and start
The bout joins its mat queue. Starting it opens the operator board, wakes the assigned pads, and publishes the audience board for that mat.
socket startMatch
Control room
Multi-mat live wall
2 live19 queuedAuto-refresh 15s · score reconcile compares board state against the database
- 04
Score live
Officials award points from their own pads. Each delta broadcasts to the match room, so the board on the wall and the overlay on the stream move together.
socket updateScore
LiveMat A · Senior · 68 kg
Match #1284
Red corner
A. Deshmukh
Kolhapur Akhada
4TimeLive00:34Blue corner
R. Patil
Pune Combat Club
4Point Stream · Live scoring · Mardani
Red +1 · Jab combo
- 05
Finish and record
Declare the result and method. The bout writes to athlete history, advances the bracket, and unlocks certificates and results export.
socket finishMatch
Bout complete
PointsWinner
Draw
4–4
- Athlete history updated
- Bracket advanced
- Certificate unlocked
- Results CSV row written
Coverage
The disciplines wired into the product
Not an “any sport” claim. These are the modules that exist, each with its own board, scoring rules, and officials model.
Sport modules
- Mardani SportsFight scoring & boardsmardani-sports
- Traditional MardaniPunch officials & totalstraditional-mardani-sports
- Combat SportsBoxing, MMA, karate & morecombat-sports
- Kabaddi SportsRaid & tackle boardskabaddi-sports
- Football SportsGoals & live boardsfootball-sports
- Volleyball SportsPoints & live boardsvolleyball-sports
Combat hub · one bout pipeline
rounds × seconds
Striking
- Boxing3×180s
- MMA3×300s
- Kickboxing3×180s
- Muay Thai3×180s
Point martial
- Karate1×180s
- Taekwondo3×120s
Grappling
- Wrestling2×180s
- Judo1×240s
- BJJ1×300s
Adding a combat discipline does not mean a new product. All nine share the same bout table, board, and officials model — only the round and timer defaults differ.
How scoring worksReal time
One score, many screens, no drift
The live layer is a dedicated Socket.IO service, not a side effect of the web app. Here is what it actually guarantees.
Who scores
Red / blue corner pads
joinMatch → authorize-scoring
Punch officials 1–4
/solo-game · Panch1…Panch4
Operator board
start · pause · reset · finish
What carries it
Match room broadcast
updateScore, room-only
Short-lived socket tickets
/api/auth/socket-ticket
Org-filtered queue snapshots
queueSnapshot per tenant
What reads it
Audience scoreboard
/public/scoreboard/{slug}
Venue TV wall
/public/now/{org}
OBS overlay
/public/overlay/{slug}
Fan companion
/public/fan/{org}
Scores are room-scoped
A point is broadcast to its match room, never across the namespace. Two bouts on two mats cannot bleed into each other.
Authorisation is re-checked at join
Holding a link is not enough. Corner scoring is authorised against the current assignment every time a pad connects.
MySQL stays the source of truth
Boards are fast because they are in memory, but the result is persisted. Score reconcile compares the two and reports mismatches.
Restarts recover
With Redis configured, the socket layer runs multi-instance and restores bout snapshots after a restart instead of losing the card.
Access control
Everyone sees exactly their job
A punch official should not be able to open the billing console, and a coach should not be able to edit another club's roster. This matrix is generated from the product's own capability definitions.
| Role | Orgs | Users | Branding | Athletes | Events | Brackets | Matches | Audit |
|---|---|---|---|---|---|---|---|---|
| Platform mastermaster_adminAll organizations | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
| Federation adminorganization_adminOne organization | Not allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
| Game admingame_adminOrganization events | Not allowed | Not allowed | Not allowed | Allowed | Allowed | Allowed | Allowed | Not allowed |
| Fight adminfight_adminMatch operations | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Allowed | Not allowed |
| Club ownerclub_ownerOne club | Not allowed | Not allowed | Not allowed | Allowed | Allowed | Not allowed | Not allowed | Not allowed |
| CoachcoachClub athletes | Not allowed | Not allowed | Not allowed | Allowed | Allowed | Not allowed | Not allowed | Not allowed |
| Head officialhead_refereeAssigned bouts | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Allowed | Not allowed |
| RefereerefereeAssigned bouts | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Allowed | Not allowed |
| AuditorauditorRead-only | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
| Punch officials 1–4punch_1…punch_4Own punch slot | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
Organization isolation
Users, matches, athletes, and certificates are scoped to an organization. A cross-tenant request returns 403 rather than an empty list.
Per-org overrides
A federation can tighten or loosen a capability for one role without a code change, and the override is applied on top of these defaults.
Audit trail
Sensitive operations — assignments, user changes, payment marking — are written to an organization-scoped audit log.
Audience
Publish once, appear everywhere
Giving a match a public slug produces every audience surface at the same time. Staff views stay behind authentication; only what you publish is public.
/public/now/mh-federation
Venue TVMaharashtra Open · Day 2
On now- Mat AA. Deshmukh vs R. Patil4–4
- Mat BS. Kulkarni vs M. Jadhav2–3
- Mat CV. Shinde vs T. Gaikwad—
Venue wall. Every mat on one screen for the hall, with organization branding and sponsor slots.
/public/overlay/mh-open-mat-a
BroadcastTransparent background · drop into OBS as a browser source
OBS overlay. A lower third that tracks the live bout, themeable per organization.
/public/fan/mh-federation
PhoneFollow from the stands
Senior · 68 kg
- Mat B · boxing 2–3
- Mat C · called
- Mat D · idle
Fan companion. Spectators follow bouts and see what is next without asking at the desk.
Plans
Tiers that map to real feature gates
These are not marketing tiers. Each plan code corresponds to a server-side gate: if a plan lapses or a feature is not included, the API refuses rather than degrading quietly.
Starter
Free
25 seats included
Mardani and traditional scoring, athletes, events, boards
Pro
Most common₹4,999/ period
100 seats included
Adds the combat hub, team sports, brackets, squads, control room
Federation
₹14,999/ period
500 seats included
Adds multi-mat queues and tech settings at federation scale
Indian rupee list prices. Billing runs through Razorpay where it is configured for your deployment; offline settlement is supported for federations that need it.
Full plan comparisonBring your next event day onto one console
Tell us how many mats you run and which disciplines you score. We will set up an organization and walk your officials through the pads.
- Walk through a live bout on your own sport
- See the control room with your mat layout
- Review tenancy, roles, and audit before you commit