Twenty Twelve JJ · Braddan · Isle of Man
TwentyTwelve bind-rune mark

One app runs
the whole gym

Booking, the mat clock, pairing, round reviews, chat, coach tools and the office — a single install on every phone and the TV on the wall. This is the full feature list, with the clock itself to play with.

LIVE ROUNDS
started by Mark F
READY — 5 × 6:00 · 1:00 REST
6:00

A working copy of the wall clock. On the real TV it also shows the roster, the pairs in colour, and a QR code that checks people in.

LIVE ROUNDS · ROUND 1/5
started by Mark F
6:00
Who's rolling whom Shuffle deals fresh partners — nobody repeats until everyone's met
Press shuffle to deal round 1.
Sitting out Tap a name to sit them out — they're benched from the next deal

The coach's phone wires the room

This demo runs the same pairing rules as the live app: a seeded shuffle with a full no-repeat rotation, cross-block memory, and fair benching when the numbers are odd.

01 · The mat clock

The round clock that runs the session

Big enough for the wall, smart enough to keep the record. Press start — that's the whole manual.

Four block types, colour-coded

Warm-up, positional, drilling and live rounds — each with its own colour on every screen, each credited by its own rules.

Presets, shared and personal

The gym's standard blocks plus each coach's own. Long-press and drag to reorder them.

Custom timer — off the record

A plain clock for anything unofficial: pick round, rounds and rest, press start. No attendance credits, no pairs, no stats — and it says so on the button.

Started by — accountability

Every block is stamped with the account that started it, shown on the phone and the TV. Start the clock from your sofa and the whole room knows it was you.

Sit-outs, live

Tap a name to sit them out this round or the next; hold to mark them gone for the day — their mat time is trimmed to the minute they left.

TV mode

Idle dashboard with the wall clock in server time, today's class, and a QR code that checks members in. During rounds: the big timer, the roster, and the pairs in colour.

Pause, skip, end — from anywhere

Phone and TV stay in lockstep. Locked phones, dead Wi-Fi and mid-round wakes all recover cleanly — stale updates can never roll the room backwards.

Fair crediting

Completed rounds count minutes and rounds; short rounds pool into round-equivalents so a 2-minute shark tank still adds up honestly.

Audio cues

Round and rest horns on the TV and phone, unlocked with a single tap the first time.

02 · Pairing

Who rolls whom, solved

A seeded shuffle with a memory — mash the button all you like, the deal only changes when it should.

No-repeat rotation

Nobody meets twice until everyone's met once. The rotation survives across blocks in a session — five one-round blocks still rotate partners.

Fair benching

Odd numbers bench the person who's sat least. Bench time is tracked so it evens out across the night.

The patchbay

Hand-wire any pairing mid-round. The record splits at the exact moment you re-wired, down to a five-second minimum segment.

Colours on the TV

Each pair gets a colour; matching chips light up on the wall so partners find each other without a shout-out.

The pair matrix

Every roll between every pair over 30 or 90 days, coaches included. Crosshair two names and the paths light up to where they meet. Dark rows are cliques; empty cells are pairings that have never happened.

One shuffle, zero settings

No modes, no knobs. Coverage is the only rule, and the same seed always deals the same round — so a double-tap can't scramble the room.

03 · Rounds & stats

Rate your rolls, own your record

Every wired round lands in your log with the partner's name on it. Score it honestly, lock it in, watch the numbers build.

Your rounds log

Every recorded round: block, partner, duration, R1/R2 within the block, and the class it happened in.

Round reviews

Score each roll 1–10, log subs and taps, call it W, L or draw, add a note only you can see.

🔒 Lock them in

Lock a review when you're done being honest with yourself. Locked rounds are read-only until you choose to edit.

Nine stat tiles

Sessions, mat time, rounds, show-rate (last 20 bookings), streak of consecutive weeks, drilling, sparring, positional and warm-up minutes — filtered by 7 days, 30 days, or all time.

Honest mat time

Check-in to end of session, minus the time after you left early. The clock's record wins over guesswork.

Belt journey

Your promotion timeline — every belt and stripe, when, and which coach awarded it.

Leaderboards

King of the warm-up, most drilling, most positional — only counted where the clock actually ran.

R1 · Liam K6:00 · LIVE
🔒 locked in · 7/10 · W
04 · Chat & messages

The gym's group chat, done properly

Everything a messaging app should do, inside the gym's own walls — with a staff-only channel the server actually enforces.

Instant sending

Your message appears the moment you hit send, with a delivery dot: grey once the server has it, glowing orange once someone's read it.

Seen by & typing

"Seen by 4" under your latest message, names on a long-press — and "Rich is typing…" live over the socket.

Reactions, replies, edits

Long-press any bubble: six quick reactions, reply with a quote that jumps back to the original, copy, edit your own, delete.

Voice notes, transcribed

Hold the mic, talk, release. The clip sends instantly and AI transcribes it in the background so nobody has to press play in a quiet office.

GIFs, photos, clips

GIF search and trending, compressed photo sharing, and video clips up to 50MB — tap-to-load so nobody's data plan gets ambushed.

A proper emoji picker

Ten categories including a grappling row, with your recent picks one tap away.

Direct messages

Private threads with read receipts, profile pictures, unread badges and a clear-conversation option.

The coaches channel

Staff-only, enforced server-side on every route — list, post, react, delete and even typing signals respect the wall.

Bots in the room

An AI assistant with the gym's own context answers member questions; coach commands handle belt promotions and bulk actions with a human confirmation step.

Notifications you control

Six independent push toggles — chat, DMs, bookings, reminders, changes, promotions — so the app only taps your shoulder when you asked it to.

The rune wallpaper

The gym's bind-rune, ghost-faint behind the conversation. Ours, not a stock doodle.

05 · Booking & attendance

Get them on the mat

Booking that respects capacity, check-in that takes seconds, and attendance numbers a coach can actually trust.

Live timetable

Every class with spaces left, book and cancel in a tap, atomic capacity so two thumbs can't take the last spot twice.

Waitlists

Full class? Join the queue — a cancellation promotes the next person automatically and tells them.

Book your usual

One tap books the week you always train. Habits, encoded.

QR check-in

Scan the code on the TV as you walk in. Coaches can check anyone in manually too.

Streaks & show-rate

Consecutive training weeks and your last-20 show-rate, on your home screen where they nag gently.

Going away

Tell the app you're travelling and the slipping-members radar leaves you alone until you're back.

Reminders & changes

Class reminders before you train; instant notice if a session is cancelled or moved — with your booking handled.

Private sessions

Invite-only sessions with the cost split across attendees, kept off the public timetable.

Overspill minutes

Classes that run long credit the extra time. The mat doesn't stop at the hour and neither do the stats.

Waiver on signup

Accepted once, recorded forever, before anyone steps on the mat.

06 · Coach tools

Run the room, fix the record

Everything a coach needs mid-session, and everything they need after to keep the numbers honest.

Retro backfill

Forgot to run the clock? Backfill a whole session or a single block after the fact — minutes, rounds and attendance together.

Block retype

Ran it as live but it was really positional? Retype the block and every member's stats re-file themselves.

Manual minutes by chat

Tell the bot "+20 minutes drilling for Sam on Tuesday" and it stages the change for your confirmation.

Attendance matrix

Every member × every session outcome at a glance — attended, no-show, cancelled, waitlisted.

Who's slipping

Members whose attendance is fading, surfaced before they become the MIA list — with going-away respected.

Coach notes

Private notes on any member, visible to staff only.

Belt promotions

Promote through the assistant with a confirmation step; the member's journey and the room's chat both update.

Health & safety

The accident book and emergency contacts, digital and dated.

Game moderation

Verify or reject Scrappy Bird scores before they count towards the prize race.

07 · Admin & the office

The business end

Roles, money, the timetable and the roster — the unglamorous machinery, built properly.

Custom roles

Build roles from a capability grid — edit members, money, exports, broadcasts, org settings and more — then assign them by name. The server checks capabilities on every route.

Members admin

The full roster with search, editing, deactivation and signup approvals.

Timetable management

Classes with weekday, time, duration, coach, capacity and topic. Time changes ripple to future sessions; deactivating a class cancels its future sessions and tells everyone booked.

Events

One-off events with compressed poster images, capacity and booking like any class.

Pay-as-you-go tab

Per-session charges onto a member tab — settle or void, with cancelled sessions cleaning up their own charges.

Broadcast push

Message every phone in the gym at once, from the office.

CSV exports

Members, attendance and money out to a spreadsheet whenever the accountant asks.

Dated adjustments

Corrections carry their effective date, so history stays truthful.

A demo org

A fully-populated sandbox for showing the app off without touching real member data.

08 · Games & community

Reasons to open the app on a rest day

Scrappy Bird

Flap through belt-themed gates — every pass earns a stripe. Coach-verified scores feed a prize race. Install-the-app exclusive.

Tappy

Pass the guard, dodge the juice. Challenge another member head-to-head, live.

Profiles & walls

Avatars, wall posts with photos, Instagram links and a member directory.

09 · Platform & security

Built like it matters

A progressive web app on Cloudflare's edge — no app store, no middleman, independently audited.

Installs like an app

Add to home screen on iPhone or Android. Launches offline, updates itself, versioned to the byte.

Edge-native

Cloudflare Workers, D1, KV and Durable Objects — the live chat socket, the clock state and the database all live at the edge.

Hardened by default

A strict content-security policy with no inline script, HSTS, rate limiting and a WAF in front of everything.

Fail-closed auth

Signed tokens with per-user revocation, and a server that refuses to run at all if its secrets are missing.

Bounded everything

Request bodies are streamed and byte-counted against hard caps — headers are treated as advisory, not trusted.

Privacy at the server

Channel access, DM eligibility and role capability are resolved server-side on every single route. The client is never trusted with the rules.

AI on tap

Voice transcription, the gym assistant and coach commands run on the same edge platform — no data shipped to a third-party dashboard.

Audited, repeatedly

Three independent AI audits and 300+ automated checks run against every release before it ships.