Docs Admin Manual
Admin Manual

FightReg Administration

Complete guide to setting up, running and wrapping up a tournament with FightReg.

⚙️ Admin 👔 Staff 💶 Billing 🔐 RBAC
Event Process — Overview Diagram
6 phases from initial setup to post-event wrap-up — as a printable SVG.
Open process diagram
⚙️

1. Initial Setup

These steps are required once before the first tournament can be created.

Organiser Profile

Enter the master data under Settings → Organiser:

  • Firmenname, Anschrift, Logo
  • E-Mail, Telefon, Website
  • Steuer-ID / USt-IdNr. (für Rechnungen)

Invoice Issuer

Enter the invoice data under Settings → Invoice Issuer. Diese werden auf allen generierten Rechnungen (PDF) gedruckt. Mehrere Invoice Issuer möglich (z.B. für verschiedene Standorte).

SMTP Configuration

Configure SMTP credentials under Settings → Mail. Use "Send test mail" to verify the connection.

⚠️
Without SMTP configuration, no invitation links,, booking confirmations or invoices can be sent by email.

Create Super Admin

On first run, install.php automatically creates a super admin. Additional admins can be created under System → Users.

🔐

2. Roles & Permissions (RBAC)

FightReg verwendet ein feingranulares Rollenmodell mit 67 Permission-Slugs in 14 Modulen. Jede Rolle hat eine individuell konfigurierbare Permission-Matrix.

System Roles (Default Roles)

RolleDescriptionTypical Permissions
super_admin Full access to everything — system-wide settings, all competitions, user management Alle Permissions
admin Event Admin — full control over assigned competitions All except system.manage
trainer Club representative — own participants, registrations, check-in participants.*, checkin.perform, startlists.view
staff Support staff on competition day — Check-in, Brackets, Ansagen checkin.*, brackets.score, announce.*
billing Accounting — billing area only billing.*
athlete Athlete — own data only, no admin functions Own profile, bookings
spectator Spectator / Guest — read-only access to public areas competition.view, brackets.view

Permission Modules Overview

competition

view, edit, create, delete, duplicate, stats, dashboard

categories

view, edit, merge, status

brackets

view, edit, generate, score, revert, settings, fightorder

checkin

view, perform, call, documents

billing

view, edit, send, surcharges, discounts, stats

announce

view, manage, speak, settings

participants

view, edit, enroll, documents

arenas

view, manage, assign, status, notify

settings / system

view, edit, ai, languages, mail · manage

Assign Staff to a Competition

  1. Wettkampf öffnen → Tab „Staff".
  2. Search for a user or create a new one (OTP invitation by email).
  3. Select role and optionally override individual permissions.
  4. Save — the user has access immediately.

3. Create Competition

  1. Navigation → Wettkämpfe → „+ Neuer Wettkampf".
  2. Enter basic data: name (DE/EN), date, time, venue, max. participants.
  3. Veranstalter und Invoice Issuer zuweisen.
  4. Set registration deadline (Deadline — danach kein Trainer-Selfservice mehr).
  5. Activate languages (DE, EN oder beides).
  6. Set tournament type for ranking: regional / national / international.
  7. Save — competition is now visible in the list.
💡
Existing competitions can be duplicated — including all categories and settings. Ideal for recurring events.

Competition Dashboard

Im Dashboard eines Wettkampfs siehst du in Echtzeit: Angemeldete Schulen, TN-Zahlen, Check-in-Fortschritt, Bracket-Status und KPI-Charts.

📁

4. Categories

Kategorien sind zweistufig aufgebaut: Hauptkategorien (z.B. „Kata") enthalten Unterkategorien (z.B. „Kata Einzel U12 weiblich").

Unterkategorie anlegen

  1. Wettkampf → Kategorien → „+ Kategorie".
  2. Name (DE + EN), Disziplin, Alters-Limits, Gewichts-Limits, Grad setzen.
  3. Bracket-Typ wählen: Single Elimination (KO) oder Round Robin (Jeder gegen Jeden).
  4. Max. TN pro Kategorie setzen (optional).
  5. Partner/Team-Flag aktivieren für Partnerübungen (Sprint 48).

Kategorien zusammenführen (Merge)

Wenn zu wenig TN in einer Kategorie sind, können zwei Kategorien zusammengeführt werden:

  1. Kategorien → „Merge" wählen.
  2. Quell- und Zielkategorie auswählen.
  3. Merge bestätigen — TN werden in die Zielkategorie übertragen, Merge-History wird protokolliert.

Kategorie-Status

StatusBedeutung
openAnmeldungen möglich
closedAnmeldungen gesperrt (manuell oder nach Deadline)
runningWettkampf läuft gerade
completedPDF export available — Ergebnisse finalisiert
🏫

5. Manage Schools

Schulen (Vereine) sind die organisatorische Einheit in FightReg. Jeder Trainer ist einer Schule zugeordnet.

Schule für Wettkampf freischalten

Wenn eine Schule sich für einen Wettkampf anmeldet, muss sie vom Admin bestätigt werden:

  1. Wettkampf → Tab „Schulen".
  2. Schule mit Status pending suchen.
  3. „Bestätigen" klicken → Status wird zu confirmed.
  4. Trainer kann jetzt Teilnehmer anmelden.

Schul-Kürzel (für Athlete-ID)

Jede Schule hat ein 3-buchstabiges Kürzel (short_code), das Teil der Athlete-IDs ihrer Mitglieder wird. Das Kürzel muss systemweit eindeutig sein.

⚠️
Einmal vergebene Kürzel sollten nicht geändert werden, da sonst bestehende Athlete-IDs ungültig werden.
👥

6. Participants

Admins können alle Teilnehmer aller Schulen einsehen und bearbeiten. Zusätzlich zu den Trainer-Funktionen stehen folgende Admin-Funktionen zur Verfügung:

FunktionDescription
Bulk-EinladungAlle Trainer einer Schule per Mail einladen
Teilnehmer zurücksetzenBuchung stornieren und TN aus Kategorie entfernen
Walkover setzenTN als kampflos gewonnen oder verloren markieren
GastteilnehmerAußerhalb der normalen Anmeldung einbuchen
Athlete-ID zuweisenBestehenden TN ohne ID eine ID vergeben (Bulk möglich)
🔢

7. Competitor numbers

Competitor numbers are physical bibs — a stock of roughly two hundred, reused every year. FightReg manages the stock, not a running number.

Setting up the stock

  1. Settings → Event → Start numbers: define the range.
  2. States per number: free, assigned, lost, damaged. A damaged bib stays in the stock and is never handed out.

Assigning — before check-in, not during it

  1. Administration → Clubs, toolbar on the right, button Start numbers.
  2. Batch assignment per club: one button at the club header covers everyone entered.
  3. At the bottom of the dialog, Listing — the sheet for the coach: who wears which number.
If an athlete withdraws, their number is free again immediately. The number also appears on the participant card and on the scoresheet.
📋

8. Start Lists

Startlisten zeigen die Reihenfolge der Teilnehmer pro Kategorie am Wettkampftag.

  1. Wettkampf → Startliste.
  2. Kategorie auswählen.
  3. Reihenfolge per Drag & Drop anpassen.
  4. Als PDF exportieren (Ausgabeliste für Kampfrichter).
💡
Die Startliste wird als Ausgangspunkt für das Bracket-Seeding genutzt. Die manuelle Reihenfolge hier bestimmt die automatische Bracket-Verteilung.
🏆

9. Brackets & Fight System

Bracket generieren

  1. Wettkampf → Kategorie → „Bracket generieren".
  2. Typ wählen: Single Elimination (Standard-KO) oder Round Robin (Rundenspiel).
  3. Seeding-Reihenfolge kontrollieren (Drag & Drop der TN).
  4. Generieren — SVG-Brackettree wird erstellt.

Single Elimination (KO-Baum)

Visualisiert als SVG-Brackettree mit interaktiven Match-Karten (260×72px). Features:

  • Zoom und Pan (Mouse + Touch)
  • Match-Ergebnis direkt in der Karte eintragen
  • Gewinner-Hervorhebung (grüne Leiste + Sieger-Badge)
  • Verlierer gedimmt (50% Opacity)
  • Seed-Nummern (①②) und Match-Nummern
  • Bracket als PDF exportierbar

Round Robin (Rundenspiel)

Horizontaler Wizard mit Rundennavigation. Features:

  • Automatische Tabellengenerierung
  • Punktestand-Tabelle in Echtzeit
  • Nächste Runde manuell starten
  • Abschluss → Platzierungen werden in Rankingtabelle übernommen

Bracket-Einstellungen pro Wettkampf

EinstellungDescription
Loser-BracketTrostrunde aktivieren (3. Platz Kampf)
Freilos-LogikAutomatisches Freilos bei ungerader TN-Zahl
Ergebnis-FormatPunkte / Technik / Flags konfigurieren
🏟

10. Arenas & Mats

Arenen sind Bereiche in der Halle (z.B. „Bereich A"), Matten/Ringe sind die konkreten Wettkampfflächen innerhalb einer Arena.

  1. Wettkampf → Arenen → „+ Arena anlegen".
  2. Arena benennen und Matten hinzufügen.
  3. Kategorien zu Matten zuordnen (Drag & Drop).
  4. Geschätzte Startzeiten pro Kategorie setzen.
  5. Status: pending → active → completed (auch manuell setzbar).
💡
Brackets können direkt einer Matte zugeordnet werden. Auf dem Hauptscreen-Modul wird dann pro Matte der aktuelle Kampf angezeigt.
🗺

11. Venue map & mat occupancy

The venue map is the second route to the mats: the same data as the mat list, only spatial. Its own page and menu entry — the list view stays untouched and remains the route that reliably works on competition day.

Building the map

  1. Pick the aspect ratio of the hall, optionally add a background image.
  2. Drag mats from the tray on the left onto the map, rotate and resize them.
  3. Objects for everything that is not a mat: entrance, scales, awards, first aid, sales, toilets — with icon, image or sponsor banner.
  4. Save once. The editor does not write on every drag: rebuilding a hall would otherwise be fifty requests over venue Wi-Fi.

Where it appears on the day

  • Projector — as an item in the screen queue, with live status per mat.
  • Spectator phones — on the live page, their own mat in colour, the rest dimmed.
  • Printed notice — for the entrance.
ℹ️
The map belongs in the projector's rotation, not as a permanent image: a static venue map burns screen time that belongs to the fight in progress.
⚔️

12. Fight Order

Die Kampfreihenfolge bestimmt, welcher Kampf wann auf welcher Matte stattfindet. Sie ist über alle Kategorien und Matten hinweg optimiert.

  1. Wettkampf → Kampfreihenfolge.
  2. Automatische Reihenfolge wird generiert (basierend auf Bracket-Stand und Arena-Zuordnung).
  3. Manuell per Drag & Drop umsortieren.
  4. Als PDF exportieren (Tagesplan für Kampfrichter).
  5. Reset möglich → automatische Reihenfolge wiederherstellen.
⚠️
Wenn ein Teilnehmer gleichzeitig auf zwei Matten kämpfen müsste, wird ein Parallelkonflikt angezeigt. Diesen manuell durch Umsortierung auflösen.
⚔️

13. Contact modes & fight scoring

Light contact and full contact are distinct modes — not two names for the same thing. They differ in how results are recorded, which is why the scoring form follows the contact mode of the category.

What gets recorded

  • Rounds — a score per round, not just a final result.
  • Flags — the judges' decision per round.
  • Judging panel per fight — who judged this fight is stored on the fight, not on the mat: panels change during the day.
  • Competitor number — printed on the scoresheet so the paper can be matched without asking.

At the judging table

A dedicated monitor shows the current competitor and their score — a view for the table, not for the hall. It opens separately and takes no room on the projector.

14. Check-in Management

Check-in Dashboard

Das Check-in-Modul zeigt in Echtzeit den Eincheck-Status aller Teilnehmer. Suche nach Name, Athlete-ID oder Schule. Status-Filter: Alle / Noch nicht / Eingecheckt.

Dokumente prüfen

Beim Check-in können hochgeladene Dokumente (Startpass, Arztzeugnis etc.) direkt eingesehen und der Status gesetzt werden (geprüft / fehlt).

Kampfaufrufe

Über das Check-in-Modul können manuelle Kampfaufrufe an Teilnehmer gesendet werden (Erscheint auf der Teilnehmerkarte als Push-Nachricht).

📺

15. Screens & projectors

A competition can have several screens, each with its own queue. The projector above the mat shows something different from the one in the entrance hall.

Setting up

  1. Settings → Main screen: create a screen and assemble its queue.
  2. Content: splash, current fight, bracket, standings, fight order, mat overview, venue map, sponsor page.
  3. Set the rotation interval per screen (default 30 seconds).
  4. Font size per screen — a projector in a large hall needs different values from a TV at the entrance.

Opening it

The screen runs without a login and is opened through a token in the address — whoever holds the link sees that one screen and nothing else. The machine at the projector needs no account.

ℹ️
Two things are easily confused: the projector in the hall and the live page on spectators' phones. Two audiences, two views — what runs on one does not automatically run on the other.
🔊

16. Venue announcements

Announcements are no longer a series of single buttons but a queue: announcements line up, run in a defined order and observe breaks.

Setting up

  1. Settings → Event → Announce / AI: store the speech key. Without an own key the installation's key applies — a badge on the card shows which one is in effect.
  2. Choose a voice — per event, from the connected account.
  3. Maintain templates and pronunciation rules: “{firstname} {lastname} of {club} — please to mat {mat}”.
  4. Set breaks: between two announcements and around the fight call.

On the day

  • Announcements come from the fight order or are triggered by hand.
  • The order in the queue can be changed; urgent items go first.
  • Recurring texts come from the cache — they do not cost a second time.
⚠️
The quota hangs off the key. If it runs out, only the event using that key is affected — not all of them.
📣

17. Fight calls & push notifications

The fight call reaches coaches and athletes on their own phone — in addition to the announcement in the hall, not instead of it.

Switching it on

  1. Push is off by default per event. Sending messages to coaches and athletes is a deliberate decision.
  2. It requires a VAPID key. Without one, every device subscription fails silently — check by requesting the public key.
  3. Calls can be triggered automatically from the fight order or by hand.

Proof of delivery

Delivery is logged per device — sent is not delivered, and without a log nobody notices an expired subscription.

⚠️
On iOS only some devices hold a push subscription. For those participants the venue announcement remains the reliable route — the call does not replace it.
💶

18. Billing & Invoices

Preisregeln

Für jeden Wettkampf können flexible Preisregeln definiert werden:

  • Grundpreis pro Kategorie/Buchung
  • Aufschläge (Surcharges): z.B. „Spätbuchung +10%"
  • Rabatte (Discounts): z.B. „Vereinsmitglied -5€"
  • Selbstzahler-Kennzeichnung (separate Rechnung direkt an Athlete)

Rechnungsgenerierung

  1. Billing → Schule auswählen → „Rechnung generieren".
  2. Positionen prüfen (alle Buchungen als Rechnungspositionen).
  3. PDF wird via TCPDF erstellt — professionelles Layout mit Firmenlogo.
  4. Rechnung per Mail senden oder manuell als PDF herunterladen.
💡
Rechnungen werden in storage/invoices/ als PDF gespeichert und können jederzeit erneut heruntergeladen werden.

Rechnungsstatus

StatusBedeutung
draftEntwurf — noch nicht versendet
sentPer Mail versendet
paidBezahlt (manuell markierbar)
cancelledStorniert
🤝

19. Sponsors

Under Settings → Sponsors. There are three placements, booked separately — the same company can run on one and not on another.

PlacementWhat is soldRecord
BannerSpace: how often the logo appears per passno — a standing promise needs none
Spectator full screenTime: seconds per impression, with a minimum gapyes, per impression
ProjectorTime, as its own page in the queueyes, per impression
ℹ️
The frequency counts per sponsor and per placement. Booking two placements yields twice the promised volume — not the same volume split in half. The organiser places, the contract sets the volume.
⚠️
The record counts only what ran in live operation. Setup and rehearsals do not belong on an invoice.
🖨

20. Printing: print agent, cards, lists

At the check-in desk every print dialog is in the way. The print agent is a small program on the workstation's Windows machine; the application hands it a finished PDF and it prints without a preview window.

Setting it up

  1. Download and install the agent. It is code-signed, so Windows SmartScreen stays quiet.
  2. Map printer roles in the agent: invoice, receipt, certificate, participant card. The application only ever knows the role, never the device name — replacing a printer is then a change at the workstation, not in the software.
  3. Several profiles per workstation are possible (A4 and receipt printer side by side).

What gets printed

  • Participant card — 85 × 90 mm, two by three on A4, or from a receipt printer on an 80 mm roll. With athlete ID, competitor number and QR code.
  • Invoices and receipts — with the design of the issuing entity.
  • Certificates — individually, per category or for a whole club.
  • Lists and notices — start lists, fight order, venue map.
ℹ️
Printouts follow the event language, not the interface language: the sheet hangs in the hall, and whoever reads it has never seen the interface.
✉️

21. Mail Templates & CI

Alle automatisch versendeten Mails können individuell gestaltet werden — pro Wettkampf oder global.

Verfügbare Mail-Typen

TypAuslöser
invitationTrainer/Staff-Einladung (OTP-Link)
booking_confirmationBuchungsbestätigung für Trainer
password_resetPasswort-Reset-Link
invoiceRechnung per Mail
participant_inviteEinladung an Athleteen (Athlete-Link)

Corporate Identity

Unter Einstellungen → Mail-Design kannst du:

  • Logo hochladen (wird in Mail-Header angezeigt)
  • Farbschema wählen (8 vordefinierte CI-Presets)
  • Absendername und Footer-Text anpassen

Wettkampf-spezifische Designs überschreiben globale Einstellungen.

👔

22. Staff Management

Für jeden Wettkampf kann ein eigenes Staff-Team mit individuellen Rechten zusammengestellt werden.

  1. Wettkampf → Staff → Benutzer suchen oder neu anlegen.
  2. Rolle auswählen (aus globaler Rollenliste).
  3. Optional: Einzelne Permissions für diesen Benutzer in diesem Wettkampf überschreiben.
  4. Einladungsmail wird automatisch versendet (OTP-Einmallink).
🔐
Die RBAC-Audit-Funktion (System → RBAC-Audit) prüft, ob alle im Code verwendeten Permission-Slugs korrekt in der Datenbank eingetragen sind.
👥

23. Corner coaches

A corner coach looks after athletes on competition day without seeing the club's invoice. They hold the trainer's rights without billing.view — they coach, they do not pay.

  • Created by the trainer, not by another coach.
  • A coach may accompany two clubs — which is why they hang off their own assignment rather than the trainer record.
  • It is a base role, not a competition role: they do not appear under a competition's "members".
🏅

24. Ranking System

FightReg berechnet automatisch Ranking-Punkte, wenn ein Bracket abgeschlossen wird.

Punkte-Konfiguration

  1. Wettkampf → Ranking-Einstellungen.
  2. Turnier-Typ festlegen: regional (Faktor 1.0), national (1.5), international (2.0).
  3. Punkte pro Platzierung definieren (1. Platz = 100, 2. Platz = 70 usw.).
  4. Bei Bracket-Abschluss: Punkte werden automatisch in athlete_rankings geschrieben.

Globales Ranking

Das globale Ranking aggregiert alle Ergebnisse aller Wettkämpfe. Unter Ranking in der Navigation findest du die Gesamtrangliste — filterbar nach Kategorie, Zeitraum und Verband.

🌐

25. Federations

Verbände können Schulen und Wettkämpfe organisieren und eigene Ranglisten führen.

FunktionDescription
Verband anlegenName, Logo, Kontakt, übergeordneter Verband (Hierarchie)
Schulen zuordnenVereine einem Verband zuweisen
Wettkämpfe verknüpfenTurniere einem Verband zuordnen (für Verbandsranking)
VerbandsrankingRanking nur innerhalb der Verbands-Wettkämpfe
Verbands-AdminsSeparate Admins für Verbandsebene (Sprint 43+)
🔧

26. Settings

BereichInhaltBerechtigung
AllgemeinTimezone, Währung, Sprachensettings.edit
VeranstalterFirmenname, Logo, Adresseorganizer.edit
MailSMTP-Zugangsdaten, Test-Mailsettings.mail
Mail-DesignCI-Farben, Logo für Mailssettings.mail
KI-AssistentAPI-Keys (Anthropic/OpenAI), Chat aktivierensettings.ai
TTSElevenLabs API-Key, Stimme, Templatesannounce.settings
ÜbersetzungenLokale Texte anpassen, Übersetzereinladungentranslations.*
🔑

27. Access: self-registration & one-time passcode

Self-registration

Under Settings → Platform. When off, the register button disappears from the landing page and the organiser creates accounts. When on, clubs register themselves.

ℹ️
The lock works server-side, not just on the button: if the query fails, the answer is closed. A failure must not let anyone in.

One-time passcode as a second factor

Also under Platform: enforced for everyone or optional. If the schema is not yet migrated, login behaves as before — here a failure must not lock anyone out. Same pattern as self-registration with the opposite sign, and both directions are deliberate.

🈯

28. Translations

Eleven languages. The language files are the base and the database layers over them — anything changed on the translation page takes effect immediately and survives every deployment.

  • Translation happens on the live system, not on a copy.
  • That work therefore lives in the production database first and should be exported back into the language files regularly.
  • Translators can be invited without an account of their own.
⚠️
English text in an English slot looks right even when it is untranslated. Gaps do not show up by looking — only by counting.
🧪

29. Demo branch

For demonstrations and trials there are demo competitions with their own accounts. A demo account sees demo competitions only.

⚠️
No real mail leaves a demo. Sending is blocked there — otherwise a club receives an invoice for a tournament that does not exist.
🖥

30. System Module (Super-Admin)

Das System-Modul ist nur für Super-Admins sichtbar (system.manage-Permission).

TabInhalt
BenutzerAlle Benutzer auflisten, deaktivieren, löschen, neue anlegen
RollenSystemrollen und ihre Permission-Matrix bearbeiten
RBAC-AuditKonsistenz-Check: Code-Permissions vs. DB-Permissions
Chat-LogsKI-Assistent-Protokoll einsehen und löschen
Audit-LogAlle Admin-Aktionen nachverfolgen
Service WorkerCache-Version einsehen, Force-Update auslösen
🤖

31. AI Settings

FightReg unterstützt zwei KI-Provider für den Chat-Assistenten:

Anthropic Claude

Standard-Provider. Modell: claude-sonnet-4-20250514. Tool-Use für DB-Abfragen.

OpenAI

Alternativ-Provider — austauschbar. Gleiche Tool-Definitionen.

Den Chat aktivieren/deaktivieren unter Einstellungen → KI (chat_enabled). Chat-Logs unter System → Chat-Logs.

🎓

32. Certificates

FightReg generates individually designed certificates for placements and participation — as print-ready PDFs with a QR verification code.

Template Designer

Under Settings → Certificates → Template Designer (URL: /certificate-designer) you create visual certificate templates:

  1. Select preset — templates for placement or participation, portrait/landscape (A4/A5).
  2. Position elements — drag & drop on canvas: text fields, athlete name, category, placement, date, logo, winner image.
  3. Accent colour & fonts — primary colour and font size adjustable per element.
  4. Preview — real-time PDF preview with sample data.
  5. Save — template is stored under a name and available for assignment.
💡
Undo: Ctrl+Z, or DEL key to remove selected elements. Language of category labels (DE/EN) switchable via toggle.

Template Assignment

  1. Competition → Certificates → select template.
  2. Optionally: category-specific template overrides competition-level template.
  3. Templates can be duplicated and customised.

Generating Certificates

ActionDescription
Single placement certificateCompetition → Category → Participant → "Certificate (Placement)"
Single participation certificateCompetition → Category → Participant → "Certificate (Participation)"
Bulk: all placedCompetition → Certificates → "All Placement Certificates (PDF)"
Bulk: all participantsCompetition → Certificates → "All Participation Certificates (PDF)"
Bulk: completeCombined PDF with placement + participation certificates
⚠️
PDFs are generated server-side with TCPDF and provided as a download. Large bulk exports may take a few seconds.

QR Verification

Every certificate contains a QR code pointing to /verify/{uuid}. Anyone can verify the authenticity of a certificate via this URL — without login.

🔒
QR codes are generated locally via the internal /api/qr endpoint (no external service — GDPR-compliant).
📐

33. Forms & Kata Scoring

For kata and forms categories (technical scoring by judges), a dedicated scoring system is available — independent of the KO/Round Robin bracket.

Create Scoring Session

  1. Competition → Forms → "+ New Session".
  2. Select category (must have type forms or kata).
  3. Set number of judges (3–7).
  4. Assign judges by name or user account.
  5. Optionally assign an arena/mat.
  6. Import start order from start list or adjust manually.

Conducting Scoring

Each judge scores via /judge (separate tablet view, no navigation):

  1. Enter session code or open via QR link.
  2. Select current participant.
  3. Enter score (configurable decimal format, e.g. 8.5–10.0).
  4. Submit — visible in real time on the admin overview.
💡
The judge view (/judge) loads no global JS — no session timeout, optimised for tablet use.

Results & Finalisation

FunctionDescription
Live overviewAdmin sees all scores in real time (average, individual marks)
Intermediate rankingSorted by average score at any point
Finalise sessionFreeze results — ranking fixed, certificates unlocked
Reset sessionDelete all scores and restart (only before finalisation)
NotesFree-text notes per participant for judges

Category Setup for Forms

When creating the category, select type forms (instead of fight). Forms categories appear automatically in the Forms tab and do not create a KO bracket.