Trainingen, plannen en de logica erachter
Dit document trekt de hele trainingslaag uit de app open: hoe de bibliotheek is opgebouwd, hoe categorieën in de UI werken, welke zones en IF/TSS-logica worden gebruikt, welke plannen erin zitten en waarom die opbouw precies zo gekozen is.
1. Kort samengevat
WattFlow heeft op dit moment twee ingebouwde bibliotheken en drie ingebouwde trainingsplannen. De bibliotheek wordt in de app niet alleen op type weergegeven, maar ook op gebruikerscategorieën, zodat de Trainingen-tab rustig blijft: vooral Uithoudingsvermogen, Omslagpunt en Testen voor de ingebouwde set, met VO2max en Kracht als extra bakjes voor imports.
2. Hoe de Trainingen-tab werkt
De Trainingen-tab is tegelijk bibliotheek, filterlaag en importpunt. In de app komen ingebouwde sessies, favorieten, imports en actieve plannen dus samen rond dezelfde workoutgegevens uit.
Wat de gebruiker ziet
- Categorieknoppen in app-volgorde: uithoudingsvermogen, omslagpunt, VO2max, kracht, testen.
- Duurfilter in stappen van 15 minuten.
- Zoeken op titel.
- Favorieten en geïmporteerde trainingen in een aparte Favorieten-weergave.
- Import via
.zwo, workout-.fiten activity-.fit/.tcx.
Wat er technisch gebeurt
- De Trainingen-tab leest uit
WorkoutStore, dat built-in en imported workouts samen indexeert. - Filters en zoekwaarden leven in
AppModelen worden direct op de geïndexeerde lijst toegepast. - Imports worden gekopieerd naar
Documents/Trainingenen daarna opnieuw geïndexeerd. - Een net geïmporteerde workout kan automatisch openen of in de segmentweergave “Geïmporteerd” landen.
- Als er een actief plan loopt, stuurt de app je sneller naar planvoortgang; anders opent Trainingen als standaardtab.
| Onderdeel | Gebruikerslaag | Technische logica |
|---|---|---|
| Zoeken | Op titel filteren zonder extra scherm | Filtert direct de reeds geïndexeerde WorkoutItem-lijst |
| Categorieën | Snel naar een type sessie | Displayvolgorde komt uit WorkoutCategory.displayOrder |
| Duurfilter | Van kort en haalbaar naar langer en zwaarder | Werkt in stappen van 15 minuten met een bewaakte min/max-range |
| Favorieten | Vaste sessies snel terugvinden | Koppelt aan bestandsnaam, zodat herindexeren geen favorieten wist |
| Import | Bestanden uit Bestanden, Mail of iCloud toevoegen | Workoutbestanden blijven in de trainingsbibliotheek; activitybestanden gaan door naar Historie |
3. Categorieën in de app
De app gebruikt een gebruiksvriendelijke categorielaag boven op de ruwe workouttypes.
Daardoor hoeven gebruikers niet te denken in JSON-typen als sweet_spot of maintenance,
maar ziet de Trainingen-tab er stabiel en herkenbaar uit.
3.1 Ingebouwde bibliotheek
3.2 Imports en analyzer
Voor imports loopt de app via een analyzer en classifier. Daardoor kan een buitenbestand wél in VO2max of Kracht terechtkomen, ook al levert de ingebouwde WattFlow-bibliotheek daar nu nog geen eigen sessies voor.
Analyzerregels
Importgedrag
- Workoutbestanden:
.zwoen workout-.fitworden trainingsitems. - Activiteiten: activity-
.fiten.tcxworden geen training, maar historie. - Waarom dat nuttig is: één importknop, maar toch een scheiding tussen “iets om te rijden” en “iets om terug te kijken”.
- App-flow:
4. Zones, kleuren en planmetrics
De grafische blokken in deze gids volgen dezelfde denklaag als in de app: FTP-percentages worden naar zones vertaald, zones krijgen een kleur, en diezelfde drempels sturen zowel mini-grafieken als trainingsclassificatie.
4.1 Zonegrenzen
4.2 IF en TSS
Geplande metrics in de bibliotheek
Elke ingebouwde training draagt een geschatte IF en TSS mee. Die waarden zijn bedoeld als plan- en bibliotheeknavigatie, dus als “hoe zwaar is dit ongeveer?” nog vóór je gaat rijden.
- IF: in de analyzer is dat de genormaliseerde vermogensfactor uit de blokken.
- TSS:
uren × IF² × 100. - Stressbars: in de analyzer worden die uit TSS afgeleid in 1 tot 5 balken.
Wat dit in de praktijk betekent
- De bibliotheek kan lichte, middelzware en zware sessies sorteren zonder eerst een echte rit nodig te hebben.
- Plannen kunnen weken opbouwen in duur en belasting, niet alleen in titels.
- De werkelijke rit berekent later zijn eigen metrics opnieuw uit de live samples en niet alleen uit de planwaarde.
- Voor testworkouts kan daarnaast nog een kandidaat-FTP uit het testblok komen.
5. Trainingsplannen
De plannen in WattFlow zijn geen losse labels boven op de bibliotheek, maar echte vaste schema’s die naar specifieke workout-IDs verwijzen. Daardoor blijft voortgang stabiel, ook als de trainingsbibliotheek later groeit.
6. Bibliotheken en ontwerpkeuzes
Onder de plannen hangen nu twee bibliotheken. Eén richt zich op FTP-opbouw en één op duur/fit. Ze hebben bewust een ander karakter, maar delen wel dezelfde indoor logica en charttaal.
6.1 Structured FTP
6.2 Endurance & Fit
7. Alle trainingen
Hieronder staan alle ingebouwde trainingen gegroepeerd volgens de categorieën die de app zelf gebruikt. Elke kaart toont dezelfde basisinformatie die je in de bibliotheek nodig hebt, plus extra technische details en trainingsreden.
7.1 Uithoudingsvermogen
7.2 Omslagpunt
7.3 Testen
7.4 Importcategorieën
VO2max
De huidige WattFlow-library levert nog geen ingebouwde VO2max-sessies, maar imports kunnen daar wel landen als ze duidelijk veel korte harde blokken of race-achtige hard/rest-patronen bevatten.
Kracht
Ook Kracht is nu vooral een importcategorie. De classifier gebruikt onder andere cadence-indicaties om strength-achtige bestanden los te trekken van gewone duur- of drempeltrainingen.
8. Hoe en waarom achter de opbouw
Als je wilt begrijpen waarom deze bibliotheek voelt zoals hij voelt, dan zit de kern hier: WattFlow kiest niet voor zoveel mogelijk exotische sessies, maar voor een indoor bruikbare bibliotheek die plannen, progressie en herhaalbaarheid ondersteunt.
1. Indoor-first boven “alles kunnen”
De meeste sessies vallen in een bruikbaar venster van ongeveer 30 tot 75 minuten. Dat sluit beter aan op trainergebruik binnenshuis dan een eindeloze buitenlogica.
2. Statische blokken zijn expres saai
“Simpel en statisch” is hier geen beperking maar een ontwerpkeuze. Binnen voelt een heldere structuur vaak beter dan pseudo-complexiteit met veel microvariatie.
3. Sweet spot zit bij duurfamilie
Sweet spot ligt trainingskundig dicht tegen FTP aan, maar wordt in de app gegroepeerd bij duur/uithoudingsvermogen omdat het vaak als opbouw- en basiswerk wordt gebruikt.
4. Herstelweken zijn niet optioneel op papier
De plannen bouwen niet alleen omhoog. Een herstelweek zit erin om vermoeidheid te laten zakken, openers op het juiste moment terug te brengen en plantrouw haalbaar te houden.
5. Fit blijven is bewust klein
Het onderhoudsplan is geen afgezwakt FTP-blok maar een apart productdoel: ritme behouden, drempel laag houden en regelmaat maximaliseren.
6. Reusable IDs zijn een architectuurkeuze
Plannen verwijzen naar vaste workout-IDs. Dat maakt voortgang stabieler, laat plannen later uitbreiden en voorkomt dat een titelwijziging meteen een planstructuur breekt.
9. Relevante bronbestanden
| Bestand | Rol in de trainingslaag |
|---|---|
WattFlow/Views/TrainingenTabView.swift |
Trainingen-tab, filters, importentrypoint en navigatie naar detail of favorieten |
WattFlow/Views/FavorietenView.swift |
Favorieten- en geïmporteerd-segmenten |
WattFlow/Views/PlanView.swift |
Plancatalogus, voortgang en weekschema’s |
WattFlow/Domain/WorkoutLibraryModels.swift |
Decoding van bibliotheken, workouttypes, intervallen en plangebruik |
WattFlow/Domain/WorkoutCategory.swift |
Gebruikerscategorieën en displayvolgorde in de app |
WattFlow/Services/TrainingPlanCatalog.swift |
Ingebouwde planstructuur, inclusief hardcoded FTP-plan |
WattFlow/Services/WorkoutStore.swift |
Indexeren, imports en samenvoegen van built-in en imported workouts |
WattFlow/Services/WorkoutAnalyzer.swift |
IF/TSS-achtige analyse voor imports en classificatieinput |
WattFlow/Services/WorkoutCategoryClassifier.swift |
Regels die imports richting uithoudingsvermogen, omslagpunt, VO2max, kracht of test sturen |
WattFlow/Resources/WorkoutLibrary/*.json |
De huidige ingebouwde trainingsbibliotheken |
WattFlow/Resources/Plans/*.json |
Bundled plan-definities voor duur en fit |
Deze trainingsgids is afgestemd op de huidige appstructuur en bibliotheekinhoud van 27 maart 2026.