Partner
Client project
Case study13
React-based event management web application for combat sports organizers with live results tracking

Partner
Client project
Industry
Sports & Events
Core technologies
React · PHP · MySQL
At a glance
A web platform replaces the printed bout sheet at combat sports galas: spectators open the fight card in their browser via QR code and see matchups, fighter profiles, the current round and results. DuoByte develops the platform together with its operator and has built live fight control, a prediction game based on ticket numbers and a single-elimination tournament mode, among other features.
Our role: DuoByte implements domain features in the React frontend and PHP backend, working from the operator's GitLab issues while the operator develops the landing page and language versions.
Project work
How the project came together: from the context and requirements through implementation to where it stands today.
Context
At combat sports galas, printed sheets listing the matchups usually lie on the seats. When a fighter drops out or the order changes, they are wrong, and spectators learn very little about the athletes themselves. The platform grew out of that observation by a longtime kickboxing coach.
Promoters set up events in a web console, manage bouts, fighters, breaks and sponsors, and publish the fight card when it is ready. Spectators need no app: they scan a QR code on their ticket or a table display and see everything in the browser. The platform operator enables individual features per event, such as the ticket link, the prediction game or a tournament.
DuoByte has been working on the platform since August 2025. Requirements arrive as issues in the operator's GitLab project, while the operator develops the landing page, copy, structured data and the Spanish and Dutch language versions.
Challenge
On fight night, promoters often enter results themselves on a phone while bouts are underway. The interface has to work with very few inputs and forgive mistakes: a wrongly entered result must be correctable without breaking anything that depends on it.
The prediction game added a second requirement. Spectators use a ticket number, handed out on paper by the promoter, to predict the outcome of each bout. The system has to lock predictions as soon as a bout starts, stop people from guessing ticket numbers by trial and error, and keep the leaderboard current.
Tournament mode raises the stakes. In single elimination, every pairing from the second round on depends on earlier results, and correcting a result changes later pairings that spectators may already have predicted.
Solution
In edit mode, promoters reorder bouts by drag and drop and create fighter profiles with record, team, weight, height, age, titles and country. They crop photos on the spot, and background removal running in the browser can cut out the fighter. During the event they set the current bout live, count rounds and enter the result with its result type, and the spectators' fight card updates automatically.
For the prediction game, promoters generate up to 3,000 tickets per event and download them as a print-ready PDF, optionally with sponsor logos distributed evenly across the tickets. Spectators enter their ticket number, pick red corner, blue corner or draw, and see after the bout whether they were right. The leaderboard refreshes every 15 seconds and can be searched by ticket number.
In tournament mode, promoters only enter the participants and the first-round pairings. The system derives every later pairing from the winners and shows it in a bracket that slots into the schedule of the remaining bouts.
Implementation
The frontend is a React application built with Vite, Tailwind CSS and React Bootstrap, translated with i18next. The backend is deliberately simple: PHP with controllers and models, MySQL through PDO with prepared statements, sessions for sign-in and hashed passwords. It runs on standard Apache web hosting, Dompdf generates the PDFs and PHPMailer sends email.
Schema changes ship as dated SQL migrations. The tournament logic recalculates follow-up pairings under row locks. Before a result correction changes a pairing, it determines which later bouts are affected and how many predictions would be lost, then asks the promoter to confirm; once a later bout is live or has a result, its pairing stays locked.
When a bout starts, the system sets a timestamp after which the API accepts no more predictions. Predictions can only be reopened for a bout that has been reset and has no result. If the promoter swaps corners, the API detects stale data in the browser and asks for a new prediction instead of assigning it to the wrong fighter. Ticket numbers have nine characters with no ambiguous ones, and after too many failed attempts the database temporarily blocks further entries.
DuoByte wrote 17 PHP test scripts with simulated database connections for these rules, covering prediction locks, scoring, corner swaps, the tournament schedule and lost predictions after corrections, among others. The sitemap and Schema.org structured data are generated from published events so individual events can be found through Google Search.
Outcome
Promoters run fight night from one console: they change the order up to the last minute, enter results live, hand out tickets for the prediction game and set up tournaments whose bracket fills itself in. Spectators follow the evening on their own phones, and anyone who cannot attend can check the results from home.
The platform keeps growing. Tournament mode is the most recent major feature and has been part of event management since August 2026. The tests focus on the places where a wrong calculation would invalidate spectators' predictions.
Product & context
Selected views show how the system was conceived and implemented within its domain context.


System architecture
Technologies were combined to suit the task, operating model and long-term maintainability.
Related services
Internal tools, dashboards and SaaS products that follow your processes instead of bending them. Designed and coded by the founders themselves.
Learn moreProtected portals for customers, dealers and members: orders, bookings and documents as self-service, with clear roles and permissions.
Learn moreKeep exploring
Next case study

Your project
Tell us what your system needs to do. We bring structure to requirements, architecture and delivery.