# 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*
