Compilateur local d'entraînements de course pour iPhone. Concevez un protocole, ajustez ses intervalles et programmez-le dans l'app Exercice de l'Apple Watch via WorkoutKit.
LANE 04 fonctionne sans serveur, sans compte et sans abonnement. Les protocoles, le profil physiologique, le calendrier et les journaux restent stockés localement sur l'appareil.
- Compilation depuis 31 templates classés par filière : VMA, SEUIL, TEMPO, FARTLEK et RECUP.
- Création d'un protocole vierge et édition des blocs, répétitions, objectifs et allures.
- Calibration de la VMA par test demi-Cooper ou estimation depuis une course récente.
- Calcul des zones d'allure et de la charge planifiée TRIMP.
- Planification offline dans le calendrier, puis transmission à une date donnée sur l'Apple Watch.
- Journal des transmissions effectuées, sans présenter une séance prévue comme une séance réellement courue.
- Interface SwiftUI sombre, accessible et compatible avec Reduce Motion.
- macOS avec Xcode compatible avec le SDK iOS 26.
- iOS 26 minimum ; le projet cible iPhone et iPad, sans cible watchOS.
- Un compte Apple Developer payant est nécessaire pour signer un build utilisant les entitlements HealthKit et WorkoutKit.
- Pour un build simulateur, la signature peut être désactivée.
git clone git@github.com:Furan05/Lane04.git
cd Lane04
open Lane04.xcodeprojDans Xcode, sélectionnez le scheme Lane04, choisissez un simulateur iOS 26, puis lancez l'application.
Build simulateur sans signature :
xcodebuild -project Lane04.xcodeproj -scheme Lane04 -sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' -configuration Debug \
build CODE_SIGNING_ALLOWED=NOTests unitaires :
xcodebuild test -project Lane04.xcodeproj -scheme Lane04 \
-destination 'platform=iOS Simulator,id=<UDID>' \
-only-testing:Lane04TestsTests d'interface :
xcodebuild test -project Lane04.xcodeproj -scheme Lane04 \
-destination 'platform=iOS Simulator,id=<UDID>' \
-only-testing:Lane04UITestsPour connaître l'UDID d'un simulateur démarré :
xcrun simctl list devices bootedLane04/
├── App/ écrans SwiftUI, navigation et contrôleurs d'état
├── Data/ modèles SwiftData, catalogue, actions et validation
├── Theme/ tokens visuels, typographie et composants de marque
├── Resources/ polices Archivo et JetBrains Mono
└── Assets.xcassets
Les responsabilités principales sont séparées ainsi :
WorkoutBuildertransforme un protocole enCustomWorkout.ProtocolValidatorvérifie les données persistées juste avant tout envoi à WorkoutKit.InjectionServicedemande l'autorisation et programme la séance.InjectionControllerorchestre la machine d'état de transmission.PlanActionsgère le calendrier local et ses étatsPLANNED/SCHEDULED/SCHEDULE FAULT.
LANE 04 ne contient aucun backend ni appel réseau applicatif. L'accès HealthKit est limité à l'écriture de séances (HKWorkoutType) pour permettre la programmation via WorkoutKit ; l'application ne lit pas encore les séances réellement exécutées.
Les données envoyées à WorkoutKit sont validées à la frontière d'injection. Une séance déjà SCHEDULED est conservée localement afin d'éviter de créer un doublon ou une séance orpheline sur la montre lorsque l'annulation distante n'est pas disponible.
- La lecture HealthKit des séances réellement courues et la comparaison prévu/réalisé sont prévues pour une évolution ultérieure.
- L'heure d'une séance planifiée est fixée à 07:00 en V1.
- La suppression ou le déplacement d'une séance déjà programmée sur la montre est volontairement bloqué localement.
- Un build signé avec une équipe personnelle gratuite ne peut pas utiliser les entitlements WorkoutKit ; il sert uniquement à tester l'interface.