67 lines
2.9 KiB
Markdown
67 lines
2.9 KiB
Markdown
# 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*
|