PM · Nytt prosjekt · 18. august 2026

TriPuls

Et komplett stevnesystem for innendĂžrs triathlon: basseng, sykkelrulle og innendĂžrs lĂžpebane, med live storskjerm for publikum og enkel loggfĂžring for dommerne.

Til: Loyd (for Dagfinn og Ruben) Fra: Claude Status: Konsept + klikkbar demo Se den klikkbare demoen →
SvĂžm 750 m Sykkel 20 km LĂžp 5 km

Bakgrunn

Hvorfor dette prosjektet finnes

Bryne triatlonklubb stÄr i fare for Ä legges ned. Dagfinn har hatt ansvaret der, og sammen med Loyd og Ruben (som allerede driver AquaTrail sammen) er ideen Ä redde triatlonmiljÞet ved Ä flytte det innendÞrs: et stevneformat som kan kjÞres hele vinteren, i en vanlig svÞmmehall og idrettshall, uten veisperringer, bÄter og sikringsmannskap.

Konseptet er prÞvd manuelt fÞr: svÞmming i basseng, spinning pÄ treningssenter og lÞping pÄ mÞlle. Det fungerte, men var umulig Ä skalere, fordi all tidtaking og telling var hÄndarbeid uten system. TriPuls er systemet som gjÞr formatet skalerbart, og som samtidig gjÞr det spennende Ä se pÄ. Skal innendÞrs triathlon bli en idrett folk mÞter opp til, mÄ publikum til enhver tid kunne se hvem som leder, hvem som tar innpÄ, og hvem som ligger an til Ä vinne. Det er hele poenget med hovedskjermen.

Formatet

Slik gjennomfĂžres et TriPuls-stevne

Et vanlig triathlon er en kontinuerlig konkurranse med veksling. InnendÞrs snur vi det: de tre grenene kjÞres som tre adskilte etapper med faste starttider, for eksempel svÞm kl. 10, sykkel kl. 11 og lÞp kl. 12. Sluttresultatet er summen av de tre deltidene. Vekslingstid teller ikke, og alle fÄr god tid til Ä rigge sykkelrulla si mellom etappene. Det fjerner det mest kaotiske ved triathlon uten Ä fjerne konkurransen.

Hver etappe kjÞres i puljer etter kapasitet: bassenget begrenser svÞm (antall baner ganger 2 til 3 per bane), antall medbrakte ruller begrenser sykkel, og lÞpebanen tar mange samtidig. Appen holder styr pÄ hvem som er i hvilken pulje, og regner alle tider sammen uansett nÄr man startet.

DistanseSvĂžmSykkelLĂžpHvem
Sprint (hoveddistansen)750 m = 30 lengder à 25 m20 km pÄ rulle5 km = 25 runder à 200 mSenior, junior, agegroup
Supersprint375 m = 15 lengder10 km2,5 kmUngdom, rekrutt, mosjonister

Distansene fÞlger Norges Triatlonforbund: supersprint er halv sprintdistanse og er distansen ungdom og rekrutter konkurrerer pÄ. Lengde per bassenglengde og per lÞperunde er konfigurerbart per stevne, sÄ formatet fungerer i enhver hall (25 m eller 50 m basseng, 200 m friidrettsbane eller oppmÄlt runde i gymsal).

Klasser og regelverk

NTF konkurrerer i klassene elite, junior, agegroup (5-Ärsklasser: 20-24, 25-29 og sÄ videre), ungdom og rekrutt, pluss barneklasser (Micro-Tri, Mini-Tri, Barne-Tri). TriPuls bruker samme klasseinndeling, beregner klasse automatisk fra fÞdselsÄr ved pÄmelding, og viser bÄde sammenlagt og klassevis resultat. Et innendÞrsstevne er ikke dekket av NTFs ordinÊre konkurranseregler, sÄ stevnet trenger et kort eget reglement. Appen bygger inn de tre viktigste prinsippene:

Appen: fire flater, én sannhet

Samme server, fire ulike skjermer

TriPuls er én serverapp (samme oppskrift som resten av klyngen: Flask, SQLite, Docker pÄ loydinator) med fire nettleserflater. Ingen appbutikk, ingen installasjon: dommerne Äpner en lenke pÄ sin egen mobil og logger inn med PIN.

ArrangĂžr

Stevneadmin

PÄmelding, klasser fra fÞdselsÄr, puljeoppsett, bane- og rulletildeling, dommertildeling, starttider, resultatgodkjenning og eksport.

PC eller nettbrett
Dommer

Dommerklient

PIN-innlogging. Hver dommer fÄr 2 til 3 deltakere og én stor knapp per deltaker: ett trykk per bassenglengde eller lÞperunde. Skjermen holdes vÄken, alt bufres lokalt og tÄler nettglipp, og tider kan korrigeres manuelt som backup.

Egen mobil (PWA)
Sykkeletappen

Rullestasjon

Én enhet per rulle kobler seg til deltakerens smartrulle og pulsbelte via Bluetooth, viser watt, puls og distanse lokalt, og strĂžmmer alt til serveren. Start og mĂ„l registreres automatisk pĂ„ 20,0 km.

Mobil eller nettbrett ved rulla
Publikum

Hovedskjerm

Storskjermen i hallen. Live ledertavle justert for puljestart, pace og estimert sluttid, pulssonefarger, klassefilter og sammenlagtstilling mellom etappene. Kastes til TV eller prosjektor fra en vanlig nettleser.

Storskjerm / prosjektor

Slik kobles sykkelrulla til

Wahoo Kickr Core (og alle moderne smartruller: Tacx, Elite, Zwift Hub) sender mÄlingene sine over Bluetooth med en Äpen standard som heter FTMS. Den gir watt, kadens, fart og akkumulert distanse rett inn i nettleseren via Web Bluetooth, uten egen app. Pulsbelter bruker tilsvarende standard for puls. Siden hver deltaker tar med egen rulle, pares hver rulle mot én enhet som stÄr ved siden av den: kort avstand, ingen forvirring om hvem som er hvem, og ingen Bluetooth-kollisjoner. Har noen en gammel rulle uten Bluetooth, sykler de pÄ tid med manuell registrering i stedet.

Derfor blir sykkeletappen tv-vennlig

Sykkel er den eneste etappen som er heldigitalisert, og den er gull for publikum: hovedskjermen viser watt og puls live for hele feltet, med pulssonefarger hentet fra LoydLift-logikken. Man ser bokstavelig talt hvem som sprekker.

Live-logikken: hvem leder egentlig?

Fordi deltakerne starter i puljer, er klokketid alene meningslÞs. Appen regner derfor alltid pÄ tid siden egen start:

Gjenbruk fra LoydLift-Ăžkosystemet

Vi bygger ikke noe vi allerede har

Det meste av grunnmuren finnes allerede i klyngen og kopieres inn i stedet for Ä skrives pÄ nytt:

FraHvaBlir til i TriPuls
LoydLift stev_engine.pyStevnemodell med statuser (kommende, pÄgÄende, gjennomfÞrt) og full endringsloggStevne- og resultatmodellen, inkludert dommerkorrigeringer med logg
LoydLift authNavn + PIN-innloggingDommer- og admininnlogging (ingen brukerregistrering pÄ stevnedagen)
LoydLift utÞverprofilPulssoner (makspuls, terskler) og sonefargingPulssonefarger pÄ hovedskjermen under sykkeletappen
LoydLift session-syncMulti-device sync mot samme serverDommerklienter, rullestasjoner og hovedskjerm i sanntid
LoydLift / LoydHub PWAManifest, service worker, hjemskjerm-ikonDommerklienten som installerbar PWA med vÄken skjerm
ØkosystemetMailgun EU-utsendingResultatmail med diplom til alle deltakere etter mÄlgang
KlyngenDocker pÄ loydinator, NPM-domene, deploy.ps1, waitressDrift: samme oppsett som narsissisten-appen (Äpen pÄ nett, waitress, named volume for databasen)
LoydLift LoydosXP og gamificationSenere: sesongpoeng pÄ tvers av stevner, klubbcup
Bonus for klubben og for Coach Loyd

Deltakere som allerede er LoydLift-klienter kan fÄ stevneresultatet rett inn pÄ profilen sin (samme kobling som VO2-pipelinen bruker i dag). For alle andre er resultatmailen en naturlig rekrutteringskanal.

Stevnedagen

Tidslinje for et sprintstevne med 24 deltakere

Risiko og Äpne spÞrsmÄl

Det vi mÄ ha svar pÄ fÞr fÞrste stevne

Veikart

Tre steg, hvert steg gir et brukbart produkt

VersjonInnholdGodt nok til
v0 (ferdig)Klikkbar demo som viser alle skjermbildene og logikkenÅ selge konseptet til Dagfinn, Ruben og klubben
v1PĂ„melding, klasser, puljer, dommerklient med telling, hovedskjerm med live tavle, sammenlagt, resultatmail. All tidtaking manuell.Å arrangere et ekte stevne. Sykkel kjĂžres pĂ„ tid uten live watt.
v2Rullestasjon med Web Bluetooth: live watt, puls og distanse fra Kickr og pulsbelte, automatisk mÄlgang pÄ sykkel, pulssonefarger pÄ tavlaPublikumsopplevelsen som gjÞr dette til en idrett
v3Sesongcup pÄ tvers av stevner, LoydLift-kobling for resultater, speaker-visning, historikk og rekorderFast vinterserie for klubben

Navnet

TriPuls: tri for triathlon, puls for bÄde hjertefrekvensen pÄ tavla og pulsen i hallen. Kort, norsk, ledig som domene under go.coachloyd.no (tripuls.go.coachloyd.no). Alternativer hvis gutta heller vil noe annet: HallTri og InneTri.