ARSENIJE SAVIĆ
Case Study — Product / UX / Engineering

BOXSPOT

A two-sided product for traveling athletes and fitness spaces: discover a gym, choose a class, complete the admin, pay, and arrive ready to train.

RoleCo-founder / CTO · Product & Technology Lead
Period2019 — 2020
UsersTraveling athletes + gym operators
ProductMobile athlete/owner experience + operator web app
01 — Problem

A simple drop-in hid a lot of coordination.

For a traveling athlete, dropping into a gym meant searching for nearby options, opening multiple websites, comparing class times and programming, contacting the gym, signing a waiver, paying, and confirming the visit.

For the gym, every visitor could create another chain of messages, paperwork, payment handling, schedule uncertainty, and last-minute context for the coach.

BOXSPOT turned that fragmented exchange into one product flow.

Athlete

Find the right place

Search by location, compare gyms, understand the programming, and choose a class that fits.

Transaction

Complete the visit before arrival

Registration, waiver, payment, confirmation, and athlete context happen in one sequence.

Operator

Prepare without interrupting class

The gym receives the information it needs before the athlete walks in.

The design question was: what has to be true in the system before an athlete can confidently show up and a coach can confidently receive them?
02 — Product model

The platform coordinated four different realities.

Athlete

Discover + book

Location, preferences, profile, goals or injuries, waiver, payment, confirmation.

Gym

Configure the offer

Classes, prices, capacity, schedule, amenities, waivers, location, payouts.

BOXSPOT

Coordinate both sides

Discovery, registration, transaction, confirmation, and operational hand-off.

Coach / operator

Receive the visitor

Needs the right context at the right time without turning class into admin.

03 — Athlete journey

Compress the travel ritual into one sequence.

01

Search

02

Compare

03

Select class

04

Register

05

Sign waiver

06

Pay

07

Confirm / attend

The athlete side stayed intentionally simple.

Explore
Search a location and browse nearby gyms.
Evaluate
Compare programming, class times, amenities, and practical fit.
Profile
Share enough context for the coach to understand who is arriving and anything relevant to the session.
Waiver + payment
Move legal and commercial steps before the athlete reaches the gym.
Confirmation
End with a clear class time and gym location rather than another email thread.
04 — Operator onboarding

For the gym, joining BOXSPOT meant configuring an operating system.

A gym did not just create a profile. It had to define the data that made discovery, booking, legal readiness, and payouts possible.

01

About

Name, summary, programming.

02

Amenities

What the athlete can expect.

03

Crew

Staff and operational roles.

04

Classes

Size, price, duration, schedule.

05

Passes

Multi-day or multi-class access.

06

Promotions

Deals connected to classes.

07

Gallery

Visual context for the venue.

08

Location

Address and coordinates.

09

Hours

Operational availability.

10

Business

Merchant and payout details.

11

Waiver

Legal agreement before attendance.

12

Publish

Move from draft to live gym.

05 — Operator workspace

The complexity lived on the operator side so the athlete journey could stay light.

The operator product organized the gym around a few operational domains: About, Classes, Crew, Legal, and Payout. The wireframe below reconstructs that structure as one dense working view.

BOXSPOT / Gym operatorPublished
Operator workspace

Gym profile & operations

Everything required to make discovery and drop-in processing reliable.
AboutClassesCrewLegalPayout
Classes
ClassSizePriceDuration
CrossFit WOD14$2060m
Open Gym10$1560m
Weightlifting8$2575m
Schedule slots
Tuesday05:00 · 05:45 · 15:55 · 16:40
Wednesday05:00 · 12:00 · 17:30
Readiness
AboutComplete
AmenitiesComplete
LocationComplete
Opening hoursComplete
WaiverUploaded
PayoutMerchant ready
Commercial
PassesConfigured
PromotionsConfigured
06 — Owner view

Operators also needed a schedule-first view of the day.

Calendar
Date-based navigation keeps the operator close to what is happening today.
Class context
Daily class slots make the booking inventory visible in operational terms.
Athlete hand-off
Before arrival, the gym can already have registration, waiver, payment, and athlete context.
One product, two surfaces
The athlete side optimizes for confidence and speed; the operator side exposes the structure required to make that possible.
07 — Product architecture

The interface was a view onto a richer operational model.

Gym
Name, status, summary, programming, location.
The discoverable venue and its publication state.
Classes
Name, size, price, duration, difficulty, notes, day/time slots.
The supply that athletes can actually book.
Commerce
Passes, promotions, merchant status, payout details.
Connects attendance to payment and settlement.
Operations
Opening hours, amenities, crew, gallery.
The context an athlete needs to evaluate the visit and the operator needs to maintain.
Legal
Waivers and terms.
Moves consent before the physical check-in.
08 — Engineering

Product decisions and implementation constraints were part of the same job.

I built the operator web application around the same model the product depended on: explicit onboarding states, authenticated data, editable classes and schedules, legal documents, merchant state, uploads, and publishing.

Frontend

React + Gatsby

Responsive product UI, forms, routing, and the gym configuration experience.

Application data

Apollo + GraphQL

Queries and mutations for gym profiles, classes, crew, waivers, merchant state, uploads, and publishing.

Workflow

State-machine onboarding

Gym setup moved through explicit states instead of a loose collection of forms.

Location

Maps + place data

Venue location connected operator configuration directly to athlete discovery.

Quality

Cypress + Jest

End-to-end and unit-testing infrastructure covered core registration and login paths.

Production

Netlify + Sentry

Deployment and error monitoring were part of the working product stack.

09 — My role

I worked across product definition, UX structure, and implementation.

Co-founder / CTO

Product & Technology Lead

I moved between the customer problem, the product model, and the software required to make it real.

  • Turned the drop-in journey into product requirements and workflows
  • Worked across athlete and operator use cases
  • Designed the operational model behind gym configuration
  • Built the React/Gatsby operator web application and GraphQL integration
  • Connected UX decisions to real auth, validation, schedule, legal, and payment constraints
  • Worked from concept through production implementation
Scope

What this case demonstrates

A real multi-sided product where the customer-facing flow depended on dense operational logic underneath.

This case focuses on the product and technical work: the operating model, flows, implementation, and shipped athlete/operator experience.

10 — Product in use

The product connected discovery, booking, operator setup, and class readiness.

Athlete and owner mobile experiences were launched alongside the operator web product. The underlying system covered gym registration, authentication, setup, class configuration, legal and payout readiness, and publishing.

11 — Learning

The booking screen was never the whole product.

01

Convenience is operational design

Easy for the athlete meant moving legal, commercial, scheduling, and identity work into a coordinated system.

02

Two-sided products carry asymmetric complexity

The athlete journey could stay simple because the operator side exposed the configuration and edge cases required to support it.

03

Backend behavior shapes UX

Availability, class slots, pricing, waiver state, merchant readiness, and publishing status determined what the interface could truthfully promise.

Next case study

RHIZOME

↗