CrossFit Competition and Leaderboard App Development

Written by the DevoraX engineering teamReviewed by Sameem Amjad, FounderLast updated Based on our own delivery record (service page)

DevoraX is a two-person studio that builds competition and leaderboard software for functional fitness. We have shipped one: WOD Pro League, a Flutter athlete app on iOS and Android, a React organizer dashboard, and a Node.js backend where scoring and ranking are computed server-side. The client reports 12,778 athletes and 8,567 submitted scores. Founded 2019, fixed-price, case study published.

Builds that prove it

WOD Pro League

A global functional fitness competition platform: a Flutter athlete app on iOS and Android, a web platform at wodproleague.es, and a React administrative dashboard, all on a Node.js and AWS backend with Redis and Socket.io driving real-time leaderboards.

What it proves: That DevoraX has shipped what this page sells: server-side scoring and ranking that every client renders identically, live leaderboard delivery over persistent Socket.io channels, Redis-backed ranking built for deadline-hour submission bursts, serverless capacity that follows a competition calendar, and an organizer dashboard covering events, divisions, workouts, score review and qualification. Shipped to both app stores and publicly inspectable. It does not evidence access control, anti-cheat, multi-tenancy, payments or video judging.

  • The client reports 12,778 total athletes
  • The client reports 8,567 submitted scores
  • The client reports a 68.3% qualification rate
  • The client reports competitions running 24/7 active
  • The client reports reach across more than 120 countries

Reported by the client, not independently audited by DevoraX.

Read the 1,311-word engineering case study

What a build includes

In base scope

  • Flutter athlete app compiled to native iOS and Android from one codebase, submitted to the App Store and Google Play
  • React organizer dashboard for creating events, defining divisions, publishing workouts, reviewing submitted scores and managing qualification
  • Node.js service layer where all scoring and ranking logic runs server-side, never on the client
  • Redis-backed ranking, so leaderboard position and range queries are answered in memory rather than by re-sorting a relational table
  • Live standings pushed over Socket.io, with transport negotiation and reconnection for athletes moving between cellular and wifi mid-session
  • Score submission and review flow, with qualification status visible to athletes and editable by staff
  • Deadlines held in absolute time on the server and presented in each athlete's local time
  • Deployment on AWS serverless compute with S3 object storage
  • Handover of all source code and IP on final payment

Scoped and quoted separately

  • Video submission upload, judging queue and appeals trail
  • Entry fee payments, prize payouts and subscription billing
  • Wearable and fitness device integrations such as Apple Watch, Garmin or Whoop
  • On-site live event tooling: heat scheduling against floor lanes, offline judge tablets, arena screen graphics
  • Roles, permissions and access rules beyond separate athlete and organizer clients, and any anti-cheat or submission-validation tooling
  • Multi-tenant hosting where independent federations share one deployment with partitioned data
  • Ongoing support, monitoring and app store release management after handover

What do you actually ship in a competition and leaderboard app?

A base build is three surfaces on one backend. Athletes get a Flutter app compiled to native iOS and Android from a single codebase and submitted to both stores. Organizers get a React dashboard for creating events, defining divisions, publishing workouts, reviewing submitted scores and managing qualification. Both talk to a Node.js service layer where the scoring and ranking logic lives.

That last point is the whole design. Ranking is never computed on a phone. A leaderboard calculated client-side is a leaderboard that can disagree with the phone next to it, and in competition that disagreement becomes a dispute. Centralising ranking gives one authoritative answer that every client renders identically, and it lets competition rules change without an app store release.

Real-time delivery runs over persistent Socket.io channels rather than polling, so a submitted score propagates as an event instead of on someone's next request. Ranked score data sits in Redis, so position and range queries are answered in memory instead of re-sorting a relational table on every submission.

Who is this built for?

Anyone whose product is a ranking. Online qualifiers, multiple divisions, workouts released on a schedule, scores submitted against a deadline, a qualification cut at the end. If the standings are wrong or late, nothing else about the app matters to an athlete.

We have built that shape once, for one operator. The WOD Pro League record does not describe its client as a federation, a gym chain or an event organizer, so we do not list them as segments we serve. What the record does state is the problem the build addressed: athletes lacked a comprehensive platform to compete across global regions with real-time tracking and analysis. That platform runs global online competition, and that is the shape we can show you.

Be honest about your own scale on the discovery call. A one-off throwdown for a single affiliate does not need Redis, Socket.io and a serverless backend, and we will tell you so. This architecture earns its cost when submissions arrive in deadline-hour bursts rather than a trickle.

Which build proves you have done this before?

One build, and it is public. WOD Pro League is a global functional fitness competition platform: a Flutter app on the App Store and Google Play, a web platform at wodproleague.es, a React administrative dashboard, and a Node.js backend on AWS with Redis and Socket.io handling real-time data.

The client reports 12,778 total athletes and 8,567 submitted scores, competitions listed as 24/7 active, a 68.3% qualification rate, and reach across more than 120 countries. Those are the client's figures, not measurements DevoraX took or audited. The one that carries technical weight is the submitted-score count, because every entry is a write that had to be accepted, ranked and pushed out to connected clients without breaking the integrity of a live leaderboard.

You do not have to take any of this on description. The web platform, the iOS app and the Android app are all live and inspectable, and the full engineering case study is published on this site at /projects/31.

How does the leaderboard hold up at a submission deadline?

Competition traffic is not flat. It clusters around workout releases and submission deadlines, then falls away between events. The peak decides whether athletes trust the platform.

Three decisions carry that load in WOD Pro League. Redis holds the ranked score data, because a leaderboard is a ranking query and re-sorting a primary database on every submission does not survive a burst. Socket.io replaces polling with persistent push channels, and its transport negotiation and reconnection matter because athletes move between cellular and wifi mid-session. AWS Lambda scales out per invocation and back down afterwards, so capacity follows the competition calendar rather than a fixed fleet sized for the average.

We publish no concurrency, latency or throughput figures and will not estimate any; the only counts in the record are the client's, and they are cumulative totals, not peak load. Timing is the quieter problem: deadlines are held in absolute time on the server and shown in local time in the client, so a cutoff means the same instant everywhere.

How separate are the athlete side and the organizer side?

Separate clients, one shared backend. Three client surfaces, the Flutter athlete app, the web platform and the React administrative dashboard, sit on one Node.js service layer. The athlete app submits and displays. It cannot compute or alter a rank, because the scoring and ranking logic lives on the server, which is what makes every surface agree.

Be clear on what that is: separation of surfaces and of authority, not of data. We have published nothing on roles, permissions, row-level access or anti-cheat for WOD Pro League, so we will not describe an access model we cannot evidence. Server-side ranking alone does not stop a tampered client posting a false score through the same API; submission validation and judging do, and both are rules you define.

If you need a written access model, or several organizers running isolated competitions from one instance, raise it on the call. Role-separated dashboards over one shared backend is a pattern we describe on our multi-vendor marketplace development page, at /solutions/multi-vendor-marketplace-development.

What does the build process look like, and what do you need from us?

It starts with a free 30-minute discovery call and ends with a written fixed-price proposal before any code is written. We do not bill hourly. The proposal names what is in scope and what is not, because a fixed price is only meaningful if both halves are written down.

What we need from you is your rulebook, written down. Scoring formats per workout type, how divisions are structured, tie-break rules, what counts as a valid submission, and the qualification criteria. Those are the requirements the ranking pipeline is built from. Vague answers here are the most reliable cause of rework later.

Practically, we also need brand assets, and an app store release needs Apple Developer and Google Play accounts. Whose accounts those are, and whose cloud account the backend runs in, is settled in the proposal rather than assumed in either direction, so decide it before the first release instead of after it. If judging involves video review, show us how you judge today.

How is this priced?

Fixed price, after the discovery call, in writing. Published tiers start at $2,900 for MVP Starter and $7,500 for Growth, with Enterprise custom-scoped. Those are indicative starting points rather than quotes, and a competition platform with real-time ranking, an organizer dashboard and two app store releases sits above an MVP Starter number.

The honest driver of cost is not screen count. It is how complicated your scoring rules are and how many of them there are. One workout type with a single ranking formula is a small build. Points tables across multiple divisions, scaled and prescribed categories, tie-breaks resolved on secondary fields, and a qualification cut with manual overrides is a much larger one, because each rule is logic that has to be correct when an athlete challenges a placement.

You get the number once we have read your rulebook. If scope changes during the build, it is re-quoted in writing rather than absorbed quietly and recovered elsewhere.

What happens after launch, and who owns the code?

You own all code and IP on final payment. That covers the Flutter app, the backend services, the admin dashboard and the infrastructure configuration. That transfer is the commitment we publish, and it is the one worth holding us to in writing.

Support after handover is scoped and quoted separately rather than assumed. Competition platforms have a particular operational shape: the risk is concentrated into a few hours around a deadline, so the useful question is not a generic uptime promise but who is reachable during your qualifier window and how you reach them. Settle that before your first event, not during it.

DevoraX is two people, Sameem Amjad and Usman, working since 2019 across 25 delivered projects, every one with a published case study. Price that constraint in. It also means the people who wrote your ranking pipeline are the people who answer when it misbehaves.

When should you not hire DevoraX for this?

Do not hire us for on-site live event production: heat scheduling against physical floor lanes, judge tablets running offline in a venue with no signal, arena screen graphics. We have shipped online competition with real-time leaderboards. We have not shipped venue floor operations, and buying that from a team learning it during your event is a bad trade for both of us.

Skip us too if you need coverage in your timezone on a rota, or an agency with a bench it can surge onto a fixed event date. Two people cannot honestly promise either.

And if you only need scoring for one gym's internal throwdown, a spreadsheet or an existing off-the-shelf scoring tool will beat a custom build on both cost and time to your first event. Come back when you are running qualifiers at a scale that breaks them.

When not to hire us for this

Do not hire us for on-site live event production. Heat scheduling against floor lanes, offline judge tablets in a venue with no signal, arena screen graphics: we have not shipped those, and your event is the wrong place for us to learn. Skip us if you need timezone coverage on a rota or a bench to surge onto a fixed date, because two people cannot promise it. And for one gym's internal throwdown, a spreadsheet will beat a custom build on cost and on time to your first event.

Questions buyers ask

Is the athlete app built in React Native?

No. WOD Pro League's athlete app is Flutter, compiled from one Dart codebase to native iOS and Android builds, and both are live on the App Store and Google Play. Flutter renders its own widgets through a compiled pipeline, which keeps a long leaderboard list scrolling predictably while incoming socket events mutate it underneath the athlete reading it.

Can the leaderboard update live while scores are still being submitted?

Yes, that is the core of the build. Connected clients hold persistent Socket.io channels and receive standings changes as pushed events instead of polling for them. Ranked score data sits in Redis, so a position query is answered in memory. WOD Pro League runs this pattern, and the client reports 8,567 submitted scores through it.

What stops an athlete submitting a false score?

Your rules do, not our architecture. Ranking runs server-side in WOD Pro League, so no client can rewrite a placement, but a tampered client can still post a score through the same API. We have not published any anti-cheat or validation tooling on that build, so we claim none. Video review, judging queues and appeals are quoted as a separate workstream. Tell us how you verify a score today and it gets priced as defined work.

How long does a build like this take?

We do not publish timelines, and you should be wary of any agency that quotes one before reading your scoring rules. The schedule falls out of how many ranking formats, divisions and tie-break rules exist, plus app store review, which nobody controls. You get a date alongside the fixed price in the written proposal, after the discovery call.

Can you take entry fee payments and pay out prize money?

Payments are scoped and quoted separately. Nothing in the WOD Pro League record covers entry fees, payouts or subscription billing, so we are not going to imply we have shipped it. Bring your payment provider, the jurisdictions you sell into and your payout model to the discovery call, and it gets priced as defined work.

Can several federations run on one installation, each seeing only their own data?

That is multi-tenancy, and it is a different data model from the one WOD Pro League runs. We have not shipped tenant-partitioned competition hosting, so treat it as scoped work rather than something we have proven. It is answerable, but it has to be decided before the schema is written rather than retrofitted. Our multi-vendor marketplace development page covers role-separated dashboards on a shared backend, which is related but not the same thing.

Who owns the app once it is built?

You do. All code and IP transfer on final payment, including the Flutter app, the backend services, the admin dashboard and the infrastructure configuration. Whose Apple Developer, Google Play and cloud accounts the build ships under is a scoping decision, not something we state as house practice, so get it named in the proposal before the first release.

How do I verify you actually shipped this?

Open it. WOD Pro League is live on the web at wodproleague.es, on the App Store, and on Google Play. The full engineering case study, including the architecture decisions and the client's reported figures, is published at /projects/31. All 25 DevoraX projects have a published case study, so nothing here is a private reference.

Related work

Start with a scoping call

A free 30-minute call to work out what you are building and what is actually hard about it. If there is a fit you get a written fixed-price proposal. If there is not, we will say so on the call.

Book a call