Circuit: virtual running championships integrated with Strava inside the Nexo platform
Circuit is Nexo's first module: it lets companies create and manage virtual running championships for their customers, with automatic result tracking via Strava webhooks.
by Marcelo Macedo
Circuit: virtual running championships integrated with Strava inside the Nexo platform
This is the first post about Nexo (https://www.nexosync.com.br/), a new platform I'm building.
What is Nexo
Nexo is a platform that brings together several independent modules (subsystems), each responsible for a specific business capability. The modules share authentication, permissions, infrastructure, and common components, but can evolve independently — each with its own release pace, without blocking the others.
The stack behind Nexo combines NodeJS, PHP, Laravel, Docker, and DDD as the approach for organizing the domain.
The first module: Circuit
Circuit (https://circuit.nexosync.com.br/) is Nexo's first module and is currently in its validation phase.

It lets a company manage virtual running championships with its own customers, without relying on spreadsheets or manual processes to track who is meeting the goals.

Championship configuration
On the admin screen, the championship manager can configure:
- Total kilometers to be covered within a time period;
- Activity count, when the criterion is number of runs rather than distance;
- Athlete level as a filter (beginner, moderate, or advanced);
- A required region where the run must take place;
- Minimum pace required per activity;
- Minimum kilometer rules per valid activity.
This combination of rules makes it possible to build anything from simple accumulated-distance challenges to more elaborate championships segmented by athlete profile.

Result tracking via Strava webhook
Circuit doesn't ask users to manually report their results. Tracking happens automatically, through the Strava webhook:
Athlete finishes a run
│
▼
Strava fires the webhook
│
▼
Circuit fetches the activity details
│
▼
Activity is validated against the championship rules
│
▼
Result is recorded
As soon as the person finishes a run, the webhook is sent to the system and a query about the activity is performed to validate whether it meets the championship's rules (region, minimum pace, minimum kilometers).

The entire integration faithfully follows the rules defined by Strava, both the brand and usage guidelines and the API policy.
Guardrails against rate limiting
Strava enforces daily request limits, and fetching each activity's details consumes that quota. To avoid hitting the limit, Circuit has dedicated guardrails and a smart fetching strategy that balances two competing goals:
- validating results within the remaining quota availability;
- ensuring an event finishes successfully, even under rate-limit pressure.
Data transparency and privacy
The system makes it clear to users what data is collected and how it's displayed. For participants in the same challenge, only the summarized value of each competitor is visible — not the raw activity history.
Other important points of the data policy:
- collected data is deleted after 30 days;
- users can revoke access to their information at any time;
- the privacy policy details how data is handled and ensures users' rights.
Admin area security
The admin area is protected by JWT authentication, and login requires 2FA — an extra layer to protect the system even in the event of a password leak.
What's next
Circuit is still in its validation phase, but it already brings together the core pieces needed to run running championships end to end: flexible rule configuration, automatic tracking via Strava, API rate-limit guardrails, and a transparent data policy for users.
As Nexo's first module, it also serves as a reference for the next ones: the same foundation of authentication, permissions, and infrastructure, evolving independently according to each business's needs.