Amateur radio contest logger for SP6ZHP scouts
simulation, learning and competition in one tool
The SP6ZHP club trains scouts in amateur radio – emissions, radio procedures and HF band operation. Contests are the classic way to learn by doing: who logs more QSOs, who is faster, who is more precise. The problem was simple – there was no tool for it. Something that works in a browser on a phone, requires no installation and will not crash in the middle of a contest.
I built it from scratch, pro bono. Because some things are worth doing. The latest contest took place on 22 March 2026 – 14 participants, 2 rounds, zero issues.
What the application does
Each scout logs in with a call-sign-style login (e.g. ZHP013) and a password,
then can log QSOs during the active contest round.
The system tracks time automatically, blocks logging outside rounds
and validates duplicates.
- QSO logging – station call sign, RST report, band. Every QSO is validated and saved to the database.
- Live ranking – refreshes automatically during the contest. Medals for the top 3.
- Rounds and breaks – the admin sets the number of rounds, round duration and break length. The system tracks time on its own.
- PDF diplomas – after the contest, the top 3 can download a personalised diploma with their results.
- Archive – all contest editions are stored. You can look up results from previous meetings.
- Admin panel – manage participants, start and stop contests, view all logs.
Tech stack – simple by design
There is no JS framework or CMS here by intention. The application runs on the same hosting infrastructure as the rest of Galvatron – it did not need a dedicated server.
- PHP – backend, contest logic, sessions, QSO validation, round timers
- MariaDB – participants, QSO logs, contest editions, round configuration
- HTML/CSS/JS – minimal frontend, ranking auto-refresh, no frameworks
- TCPDF – server-side PDF diploma generation
- Apache + SSL – served over HTTPS at zawody.sp6zhp.pl
Every scout with a phone opens the page, logs in and gets to work.
Minimal attack surface, zero dependencies that could break mid-contest.
The ranking is a plain SELECT COUNT(*) grouped by participant and round –
no need for anything more complex.
Testing – what came out
The 22 March 2026 contest: 14 participants, 2 rounds of 5 minutes each with a 3-minute break. The winner logged 11 QSOs in total. The application ran without any issues throughout – the ranking updated in real time, diplomas generated correctly for the top 3.
Before that session there was one bug to fix: duplicate QSO validation (the same call sign logged twice in the same round should not count twice). It was resolved before the contest and the tests confirmed correct behaviour. Feedback from the instructor: scouts needed no explanation before they started logging. That was the goal from day one.
Source code
The application is open source. Take it, deploy it for your own club, adapt it to your needs.
If you run an amateur radio club or training programme and are looking for a similar solution – get in touch. Not every project needs an invoice.