Skip to content
Our own product

Sqoura

A tournament platform for martial arts organisations. Registration, categories, brackets and entry fees run as one system, so a national championship is organised in days.

Role
Product owner and engineering
Status
Live · beta

The problem it solves

Sporting federations and clubs run competitions on spreadsheets, paper forms and message threads. A national championship means a registration window measured in weeks, entries arriving in half a dozen formats, weight categories and age groups reconciled by hand, and fees collected by bank transfer with screenshots as receipts.

Every one of those steps is a place where an entry goes missing, and the cost of one going missing lands on an athlete who has trained all year.

What we built

Sqoura runs a competition end to end. Organisations publish an event with its disciplines and categories, competitors or their clubs register through forms that understand the event’s own rules, entries land in a review queue rather than an inbox, and fees are collected at the point of entry with receipts issued automatically.

The form builder: a palette of tournament-aware fields — discipline, taolu events, sanda weight category, age group derived from date of birth — beside the form being assembled.
The entry form is built from fields that already know the event — weight categories and age groups come from the tournament, not from a text box.

It handles both individual and team formats, and multi-discipline events where a single athlete competes across several categories.

The organiser dashboard: total applications, revenue collected, active tournaments and pending actions, over a breakdown of applications by status and charts of revenue by tournament and entries by discipline.
The organiser's dashboard — entries, fees collected and what is waiting on a decision, across one season.

How it is built

The backend is Vortos, the framework described elsewhere on this site: commands and queries separated, domain events published to a log, and read projections maintained asynchronously so that a heavy reporting query cannot slow down someone submitting an entry.

State of record lives in PostgreSQL. Projections live alongside it as indexed JSONB, which keeps a single datastore to operate and back up while still giving the read side its own shape. Kafka carries events between the two and to everything else that reacts to them. Redis handles caching and idempotency.

Everything runs containerised on ARM compute with object storage at the edge.

Where it stands

Sqoura is live and in beta, with a national federation as its launch partner — which is the arrangement that matters most, because features get tested during real competitions rather than in a staging environment. The roadmap is vertical expansion: the domain boundaries were drawn so that the competition model is independent of any one sport.

The season canvas: ten tournaments across four stages — district qualifiers, provincial championships, national championship, international selection — connected by dependency lines showing which events feed which, with a banner reading nine tournaments are blocking qualification.
A season is a graph, not a list. Ten tournaments across four rounds, every route an athlete can take between them, and a running count of what is still blocking qualification.

We are deliberately not publishing usage figures here. When there is a number we can attribute and date, it will appear on this page and not before.

Start a project

Tell us what you are building.

Send the shape of the problem. A paragraph is plenty. You get back how we’d build it, what it would take, and what the first two weeks look like. It comes the same day, from the engineers who would do the work.