clawd e1b4e4db81 04-06-02: Save error handling & retry logic
- Added specific error type differentiation:
  * Network errors → 'Anslutning misslyckades'
  * Validation (400) → 'Ogiltiga ändringar'
  * Auth (401/403) → 'Saknar behörighet'
  * Server (500+) → 'Serverfel'
  * Generic fallback messages

- Implemented retry tracking:
  * retryCount state for monitoring attempts
  * lastSavePayload storage for potential retry (future feature)
  * Console logging with context for debugging

- Enhanced error handling:
  * getErrorMessage() function for error classification
  * Comprehensive error logging with workout/exercise context
  * Draft preserved on all error types (no data loss)

- Improved UI/UX:
  * Error banner with specific, actionable messages
  * 'Försök igen' button with retry tracking
  * Sync status feedback (idle/saving/saved/error)
  * Success checkmark animation (2s duration)
  * Spinner animation during save

- CSS Enhancements:
  * @keyframes spin for loading spinner
  * @keyframes slideInCheckmark for success feedback
  * Mobile-responsive error banner (flex column on <480px)
  * Smooth animations for state transitions

Tests: npm run build ✓ (no syntax errors)
Files modified:
  - frontend/src/pages/WorkoutEditPage.jsx
  - frontend/src/pages/WorkoutEditPage.css
2026-03-02 09:00:20 +01:00
2026-02-01 00:23:49 +01:00
2026-02-28 14:43:25 +01:00

Gravl - Träningsapp

En enkel träningsapp för att följa PPL-program (Push/Pull/Legs) med progressionsspårning.

Features

  • 📋 PPL Program - 6-dagars Push/Pull/Legs split
  • 📊 Träningslogg - Logga vikt/reps för varje set
  • 📈 Progression - Automatiska viktrekommendationer
  • 📱 Mobilanpassad - Fungerar perfekt på telefon
  • 🌙 Mörkt tema - Bekvämt för gymmet

Tech Stack

  • Frontend: React (Vite) + CSS
  • Backend: Node.js/Express
  • Database: PostgreSQL
  • Container: Docker med nginx

Quick Start

# Initiera databasen
psql -h localhost -U postgres -d gravl -f db/init.sql

# Starta med Docker Compose
cd /workspace/gravl
docker compose up -d --build

Åtkomst

API Endpoints

Endpoint Method Beskrivning
/api/health GET Hälsokontroll
/api/programs GET Lista alla program
/api/programs/:id GET Hämta program med dagar
/api/days/:id/exercises GET Hämta övningar för en dag
/api/logs GET Hämta träningsloggar
/api/logs POST Logga ett set
/api/progression/:id GET Få viktrekommendation

Databasschema

  • programs - Träningsprogram
  • program_days - Dagar i programmet (Push A, Pull A, etc.)
  • exercises - Övningar (Bench Press, Squat, etc.)
  • program_exercises - Kopplar övningar till dagar med sets/reps
  • workout_logs - Loggade träningsset

Progression

Appen rekommenderar att öka vikten med 2.5kg när du når max reps på alla sets.

S
Description
Träningsapp - Gravl klon
Readme 19 MiB
Languages
JavaScript 62%
CSS 28.7%
Shell 8.8%
TypeScript 0.2%
HTML 0.2%
Other 0.1%