Files
gravl/.planning/PROJECT.md
T
2026-02-15 22:25:04 +01:00

2.9 KiB

Gravl — Workout UX Improvements

What This Is

En träningsapp (PPL-baserad) som behöver förbättrat workout-flöde. Appen finns redan med grundläggande funktionalitet — inloggning, onboarding, passloggning och progressionsförslag. Fokus nu är att göra workout-upplevelsen smidigare och mer flexibel.

Core Value

Att logga ett träningspass ska vara snabbt, tydligt och flexibelt — användaren ska aldrig behöva kämpa mot appen under ett pass.

Requirements

Validated

  • ✓ Användare kan registrera konto och logga in — existing
  • ✓ Onboarding-wizard samlar in grunddata — existing
  • ✓ Dashboard visar veckokalender och dagens pass — existing
  • ✓ Användare kan välja programpass och logga set — existing
  • ✓ Progressionsförslag baserat på tidigare pass — existing
  • ✓ Profilsida med mått och styrka — existing
  • ✓ Framstegssida med grafer — existing
  • ✓ Uppvärmningssektion i workout — existing

Active

  • Viktfält visar enhet (kg) tydligt
  • Reps-input förhindrar negativa värden
  • Inputfält för vikt/reps får mer utrymme och bättre layout
  • Användare kan lägga till extra set på alla övningar
  • Användare kan ta bort set på alla övningar
  • Användare kan bygga ett eget pass genom att välja övningar fritt
  • Användare kan modifiera ett programpass (byta ut/lägga till övningar)

Out of Scope

  • Byta ut hela programstrukturen (PPL) — behåller befintlig programmodell
  • Backend-refaktorering (enfilsarkitekturen) — fokus är frontend-UX
  • Nya övningsbibliotek eller träningsprogram — använder befintliga övningar i databasen
  • Sociala funktioner eller delning — inte relevant för detta milestone

Context

  • Brownfield: Appen är redan byggd med React 18 + Vite (frontend) och Express + PostgreSQL (backend)
  • All frontend-kod är JSX utan TypeScript, ren CSS med custom properties
  • Backend är en enda fil (backend/src/index.js) — alla routes inline
  • Navigation i appen sker via useState i App.jsx, inte URL-routes
  • Workout-loggning gör upsert (update if exists, insert if new) per set
  • Nuvarande set-antal är hårdkodat per övning i databasen (program_exercises.sets)
  • Det finns 18 övningar i databasen fördelade på 6 passdagar

Constraints

  • Tech stack: React + Vite frontend, Express + PostgreSQL backend — behåll befintlig stack
  • Språk: Svenskt UI genomgående
  • Styling: Ren CSS med CSS custom properties, mörkt tema med orange accent (#ff6b35)
  • Mobil-först: Max-width 600px, designat för telefonanvändning under pass

Key Decisions

Decision Rationale Outcome
Behåll befintlig programmodell Egna pass byggs ovanpå, inte som ersättning — Pending
Frontend-fokus detta milestone Backend-ändringar minimeras till vad som krävs för nya features — Pending

Last updated: 2026-02-15 after initialization