Mobil-first personlig träningsapp i Val Town. React-frontend, Hono-API och val-scoped SQLite ligger i samma projekt. Val Town är nu primär datakälla för träningshistorik, passbibliotek, progress och dagens rekommendation.
coach_state och skriver dagens förstaval + två alternativ till daily_recommendations.COACHING_WORKFLOW.md, inte skapa en parallell coachingmodell.intervals_sync.ts körs varje timme och kan också triggas on demand från coachchatten direkt efter ett pass. Synken matchar befintliga sessioner före import för att undvika dubbletter.Det finns ingen Val Town-cron/LLM-coach längre. Intervals-jobbet är endast datasynk, inte coaching. Den tidigare daily.ts är borttagen. Dagliga rekommendationer kommer från ChatGPT Scheduled Task utanför Val Town.
jonasolof.workout_templates – aktiva passupplägg. Produktionsdatabasen är auktoritativ för katalogen; db.ts innehåller endast bootstrap-seed och ska inte användas som komplett lista.sessions – genomförda pass. Nya app-pass har source = 'val_town'; importerad historik har source = 'google_sheet'.laps – varv/minuter med elapsed time.performance_entries – specifika progressmått, t.ex. pull_ups och toes_to_bar.coach_state – aktuell kvalitativ coachingkontext: prioriteringar, preferenser, belastningskalibrering och relevanta begränsningar.daily_recommendations – dagens förstaval, två alternativ, motivering, modell/ägare och session som rekommendationen bygger på.sync_state – systemkontrakt och legacy-metadata. training_primary_source = val_town och recommendation_owner = chatgpt_project_chat är de viktiga aktuella värdena.GET /api/coach/context returnerar nya/oprocessade sessioner, aktuell coach_state och senaste rekommendation. Det är ett bekvämt gränssnitt för coachflöden, men ChatGPT kan också läsa SQLite direkt via Val Town-integrationen.
SELECT * FROM sessions
WHERE processed_at IS NULL
ORDER BY completed_at ASC;
processed_at betyder coachad/hanterad, inte bara "har lästs av en automation". En morgonrekommendation ska därför inte automatiskt markera sessioner som processed.
Den externa ChatGPT-tasken ska varje morgon:
performance_entries, alla aktiva workout_templates och coach_state/current,daily_recommendations med model = 'chatgpt-coach',coach_state när nya passdata ger en tydlig och bestående lärdom.Appen ska presentera rekommendationen, inte själv generera en konkurrerande träningsplan.
Historik och bibliotek har importerats från tidigare Google Sheets, inklusive träningsbiblioteket 1_QBlXws3llrLcIfdwR0CC33gSF_HMqFM5Pf8Kqf9PoA. Dessa finns kvar som referens/backup, men nya produktflöden ska i första hand läsa och skriva Val Town.
Se COACHING_WORKFLOW.md för det praktiska arbetsflödet mellan appen, coachchatten och Work.