PM · Nytt prosjekt · 18. august 2026
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.
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.
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.
| Distanse | SvĂžm | Sykkel | LĂžp | Hvem |
|---|---|---|---|---|
| Sprint (hoveddistansen) | 750 m = 30 lengder à 25 m | 20 km pÄ rulle | 5 km = 25 runder à 200 m | Senior, junior, agegroup |
| Supersprint | 375 m = 15 lengder | 10 km | 2,5 km | Ungdom, 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).
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:
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.
PÄmelding, klasser fra fÞdselsÄr, puljeoppsett, bane- og rulletildeling, dommertildeling, starttider, resultatgodkjenning og eksport.
PC eller nettbrettPIN-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)Ă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 rullaStorskjermen 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 / prosjektorWahoo 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.
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.
Fordi deltakerne starter i puljer, er klokketid alene meningslÞs. Appen regner derfor alltid pÄ tid siden egen start:
Vi bygger ikke noe vi allerede har
Det meste av grunnmuren finnes allerede i klyngen og kopieres inn i stedet for Ä skrives pÄ nytt:
| Fra | Hva | Blir til i TriPuls |
|---|---|---|
LoydLift stev_engine.py | Stevnemodell med statuser (kommende, pÄgÄende, gjennomfÞrt) og full endringslogg | Stevne- og resultatmodellen, inkludert dommerkorrigeringer med logg |
| LoydLift auth | Navn + PIN-innlogging | Dommer- og admininnlogging (ingen brukerregistrering pÄ stevnedagen) |
| LoydLift utÞverprofil | Pulssoner (makspuls, terskler) og sonefarging | Pulssonefarger pÄ hovedskjermen under sykkeletappen |
| LoydLift session-sync | Multi-device sync mot samme server | Dommerklienter, rullestasjoner og hovedskjerm i sanntid |
| LoydLift / LoydHub PWA | Manifest, service worker, hjemskjerm-ikon | Dommerklienten som installerbar PWA med vÄken skjerm |
| Ăkosystemet | Mailgun EU-utsending | Resultatmail med diplom til alle deltakere etter mĂ„lgang |
| Klyngen | Docker pÄ loydinator, NPM-domene, deploy.ps1, waitress | Drift: samme oppsett som narsissisten-appen (Äpen pÄ nett, waitress, named volume for databasen) |
| LoydLift Loydos | XP og gamification | Senere: sesongpoeng pÄ tvers av stevner, klubbcup |
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.
Tidslinje for et sprintstevne med 24 deltakere
Hovedskjerm kastes opp i hallen, dommerne logger inn med PIN og ser sine deltakere. Deltakerne setter opp sykkel og rulle i sykkelsonen med merket plass.
2 til 3 svÞmmere per bane, én dommer per 2 til 3 svÞmmere. Ett trykk per lengde; appen teller ned 30 lengder og stopper klokka automatisk pÄ siste anslag.
Rullene er ferdig paret i pausen. Alle i pulja starter pÄ likt, mÄlgang automatisk pÄ 20,0 km. Publikum ser watt, puls og innbyrdes avstand live.
25 runder à 200 m. Dommerne teller runder med ett trykk, tavla viser gjenstÄende runder og beregnet sluttid per lÞper.
Sammenlagt og klassevis resultat stÄr ferdig pÄ tavla i det siste lÞper er i mÄl. Resultatmail gÄr ut til alle, og arrangÞren eksporterer lister til klubben.
Det vi mÄ ha svar pÄ fÞr fÞrste stevne
Tre steg, hvert steg gir et brukbart produkt
| Versjon | Innhold | Godt nok til |
|---|---|---|
| v0 (ferdig) | Klikkbar demo som viser alle skjermbildene og logikken | Ă selge konseptet til Dagfinn, Ruben og klubben |
| v1 | PÄ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. |
| v2 | Rullestasjon med Web Bluetooth: live watt, puls og distanse fra Kickr og pulsbelte, automatisk mÄlgang pÄ sykkel, pulssonefarger pÄ tavla | Publikumsopplevelsen som gjÞr dette til en idrett |
| v3 | Sesongcup pÄ tvers av stevner, LoydLift-kobling for resultater, speaker-visning, historikk og rekorder | Fast vinterserie for klubben |
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.