B2B SaaS · Functional fitness

Markish Arena

Markish Arena is Markish Tech's own product: a multi-tenant SaaS platform that lets gyms run functional fitness competitions end to end. It covers athlete registration, divisions, workouts, heats, judge scorecards and a leaderboard that updates in real time, including a public screen to project at the venue.

Relationship with Markish Tech
Our own product
Status
Live
Year
2026
Website
www.markisharena.com.ar (opens in a new tab)
Markish Arena screen showing a live heat, the real-time leaderboard and a judge-signed scorecard.

Problem

Functional fitness competitions are often run with spreadsheets, scattered forms and results typed in by hand after each heat. That causes delays, calculation mistakes depending on the workout type and little visibility for athletes and spectators.

Goal

Bring the whole competition into one platform where each organization runs with its own branding, judges submit results from their phones and the ranking is recalculated instantly.

Solution

We built a monorepo with a Next.js web application (admin, judges, athletes and public screen) and a NestJS API with PostgreSQL, Redis and job queues. Each gym is a tenant with its own branding. Results travel over WebSockets so the leaderboard and the venue screen update without reloading.

Main features

  • Management of organizations, competitions, divisions, athletes and teams.
  • AMRAP, For Time, EMOM and RM workouts, with scoring adapted to each one.
  • Heats and scorecards that judges complete and sign from their phones.
  • Leaderboard and public screen updated in real time.
  • Roles and permissions for admins, judges and participants.
  • Per-organization branding (logo and color palette).
  • Interface available in several languages and installable as an app (PWA).

Tech stack

Frontend
  • Next.js
  • React
  • TypeScript
  • TanStack Query
  • next-intl
  • Socket.IO client
Backend
  • NestJS
  • Prisma
  • PostgreSQL
  • Redis
  • BullMQ
  • Socket.IO
Operations
  • S3-compatible storage
  • Sentry
  • Web Push

Architecture

  • Monorepo with pnpm workspaces and Turborepo, with shared packages for types, validators, i18n and components.
  • REST API and WebSockets in NestJS; business and scoring rules live in the backend.
  • Per-organization data isolation (multi-tenant) and role-based permissions.
  • Job queues for background work such as notifications and exports.

Technical challenges

Correct scoring for every workout type

AMRAP, For Time, EMOM and RM are scored and tie-broken differently. We centralized that logic in the backend so the web app, judges and public screen always show the same result.

Real time during the event

Several judges submit results at once while spectators watch the ranking. We use WebSockets with Redis to push changes to every connected client.

Many organizations, one platform

Each gym needs its data, users and branding kept separate without duplicating the application. The multi-tenant model handles isolation in the data layer and branding in the interface.

Results

We haven't published metrics for this project yet: we only show results we can verify.

Services applied

Other projects

Have a similar project?

We'll explain how we would approach it, with which technologies and in which stages.