Strength + Wellness Collective · Charlotte, NC · May 2026

THE GAIN GAMES

A month-long team fitness challenge that turned a strength studio into a game, and the software built from scratch to run every part of it.

The idea

One month. Teams of three. Points for showing up.

The brief from the studio floor was simple: get members showing up together in May, make it feel like a season, and crown somebody at the end. Classes earn points. Community events earn points. Bringing a friend earns points. Cheering each other on earns points.

The original ops plan was sign-in sheets, a tracking spreadsheet, and me doing nightly math by hand. That plan never made it to launch. Instead the challenge got its own platform: registration, automated scoring, a member app, live leaderboards, the studio TVs, and a finale. All of it custom, all of it shipped while the clock ran.

Two SWC members high-fiving mid-workout
Teamwork makes the dream work. The challenge’s founding energy.

Green light to victory lap

Apr 14

Green light

The pitch lands. A prototype leaderboard, built from raw Mariana Tek reports for the studio’s milestone tracker, proves class stats can be scored automatically. It becomes the blueprint for the leaderboard TV.

Apr 26–28

Built & opened

Registration, the scoring engine and the live leaderboard wired up in one session. Doors open at noon on the 28th with a live signup board on the studio TV.

Apr 29–30

The build peak

The member app: magic-link sign-in, push notifications, team cards, the playbook. Built and shipped in the 48 hours before kickoff.

May 1

Game on

47 members. 17 teams. Every screen goes live.

May 1–31

The season

  • Auto-scored classes
  • Live group chat on the TVs + in the app
  • Screenshot bonus uploads
  • Achievements with stackable stars
  • Weekly themed emails
  • Daily motivation pushes
May 31

Final whistle

The board locks. Final means final.

June 1–4

The victory lap

Wrapped drops for every member on the 1st. Awards Ceremony & Open House on the 4th, raffle drawn live from the final board.

Skip ↓
gaingames.swcclt.com
Gain Games landing page — THE GAIN GAMES, teamwork makes the dream work
Gain Games app login — email field, magic link sign-in

Registration

Launch day ran like a product launch.

Captains created a team and got an invite code; teammates joined with it. Solo members got matched into pickup squads by the coaches. Race-safe registration writes shipped thirty minutes before the noon open, and the signups rolled straight onto a live board on the studio TV.

No passwords, ever. Members signed into the app with magic links: 245 sign-in links over the month, zero password resets, zero accounts to manage.

The member app

A PWA in every pocket, built in two days.

  • Your scorecard, always current

    Team total, your points, sweeps and raffle tickets, plus the Game Hub underneath it, all one thumb-scroll deep.

  • The leaderboard, three ways

    Teams, Individuals, Activity: three swipeable panes. Every class, sweep and bonus landed here within the hour.

  • 24 badges, earnable all month

    Sunrise Crew. Hat Trick. Squad Goals. Eight badges stack with stars for repeat feats: 421 badges and 783 stars earned.

  • Bonus points, by screenshot

    Google review? Coach tag on IG? Screenshot it, upload it, get points. 65 submissions reviewed and scored in-app.

Automated scoring

Show up at 6am. Points by breakfast.

Nobody filed a spreadsheet. Check-ins flowed from the studio’s booking platform into a scheduled Worker that pulled, parsed, deduped and scored attendance automatically, then every screen in the system updated itself.

  1. 01

    Class check-in

    Member taps in at the front desk like any other day.

  2. 02

    Booking platform

    Attendance lands in Mariana Tek, the studio’s system of record.

  3. 03

    Worker cron

    An ingest ran 7× a day. Idempotent, so any run repairs a missed one.

  4. 04

    Points ledger

    Every event keyed and deduped in D1. 1,270 scoring events, zero double-counts.

  5. 05

    Every screen

    App, studio TVs, admin console and emails all read the same live API.

Fairness was a feature

Class points were weighted by membership: unlimited ×1, 10-packs ×2, 5-packs ×4, so a twice-a-week member could genuinely beat a daily regular on effort, not just volume. Weekly team sweeps (all three teammates, three classes each) were detected automatically: 27 sweeps awarded.

  • 0ingest runs
  • 0classes scored
  • 0instructors
  • 0class formats

The signage system

The studio TV became the scoreboard.

A consumer 4K TV, a kiosk browser, one URL. Slides rebuild from live data every 60 seconds and skip themselves when empty.

Pre-launch TV board — teams rolling in as registration opens TV reel — Top of the Board podium, The Wobble Squad #1 TV reel — full standings, all 17 teams TV reel — Show Up Your Way standout boards Awards Ceremony & Open House TV slide Gain Games Wrapped — TV edition title slide

Pre-launch: a live “teams rolling in” board hyped the signup window.In-game: the podium, updated live all day, every day.All 17 teams, race-in cascade, tie-aware ranking.Standout boards celebrated consistency, variety and streaks, not just rank.For the finale, the TV sold the party.And when it ended: WRAPPED, the TV edition, for the whole studio.

Skip ↓

The Shoutout Wall

226 shoutouts on the studio wall.

An iMessage-style wall running live on the TVs between classes. Every member got a magic link; posting earned +1 a day, wired straight into the scoring ledger by a nightly cron handshake. Members hyped PRs, teams talked (friendly) trash, and the studio read it all month.

Shoutout Wall on the studio TV — live message bubbles, 226 shoutouts
Shoutout Wall chat view on a phone
  • “thank you Craig for the first class of gain games!!!!”
  • “This is what community looks like — supportive, consistent, driven — even on a rainy Saturday morning”
  • “S/O to Ladream team for the 7:30am classes on a Monday”

Communications

Four weekly arcs. Six sends. Zero failures.

  • Wk 1 · Shout It Out
  • Wk 2 · Share the Love
  • Wk 3 · Go the Distance
  • Wk 4 · Finish Strong

Each week opened with a themed email, proofed to myself before every send and delivered per recipient with idempotency keys tucked under the rate limit. Push notifications carried the day-to-day: bonus reminders, milestone pings, and a daily motivation quote channel. 89 pushes over the month.

The finish

The ending was designed too.

Wrapped, the morning after

Every member woke up June 1 to their own 12-slide, Spotify-style recap: classes, streaks, badges, their team’s run. With a soundtrack, and IG-ready share cards rendered server-side for every slide.

Wrapped cover — your May is ready, play with sound Wrapped — 22 classes taken, Lagree was your love language Wrapped — Sunrise Crew, 50% of classes before 9am Wrapped — longest streak, 8 days in a row Wrapped — by the numbers summary

May 2026, measured

By the numbers

  • 0points scored
  • 0scoring events
  • 0class check-ins
  • 0event check-ins
  • 0guest visits
  • 0team sweeps
  • 0badges earned
  • 0badge stars
  • 0shoutouts
  • 0bonus uploads
  • 0magic links
  • 0ingest runs

Final podium: The Wobble Squad 1,736 · The Early Birds 1,689 · Hustle and Muscle 1,435

Under the hood

One Worker, every surface

A single Cloudflare Worker serves the marketing page, the magic-link PWA, the JSON APIs and the TV surfaces, service-bound to the Shoutout Wall and the studio’s ops console. The points ledger lives in D1, bonus screenshots in R2, and the whole challenge ran on a $5 a month developer plan. When the season ended, deleting the cron schedule froze the final board in place: no re-scores, no drift, final means final.

Tap any piece for what it did here.

admin console
Admin console dashboard — teams, members, classes, points, standings and ingest log
The ops side: dashboards, team management, manual points, and the ingest log — embedded in the studio’s command center.