Files
2026-06-09 18:40:21 +02:00

4.5 KiB


title: Workout Tracker created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, fitness, workout, tracker, typescript, react, node, prisma] confidence: high contested: false sources: [https://selfh.st/apps/?tag=fitness, https://github.com/c-hive/gha-dev]

Workout Tracker 💪

Application minimaliste et efficace de suivi d'entraînements, écrite en TypeScript. Pensée pour un usage personnel rapide : créer une routine, logger les sets, suivre la progression.

Métadonnée Valeur
Site web https://workout-tracker.dev/
GitHub https://github.com/c-hive/gha-dev
License MIT
Langage TypeScript (React + Node.js)
Étoiles 48 (selfh.st rank)
Dernière MAJ 2026-05-05
Catégorie cat-fitness

Description

Workout Tracker est une application web légère qui fait exactement ce qu'on attend d'un tracker d'entraînements : définir des exercices, créer des routines, logger les séries (poids, répétitions), et visualiser la progression dans le temps. Pas de fonctionnalités gadget, pas de nutrition, pas de réseau social : juste l'essentiel bien fait.

Caractéristiques :

  • Exercices personnalisés ou depuis un catalogue
  • Routines réutilisables (push, pull, legs, etc.)
  • Logging rapide des séries avec auto-suggestion des valeurs précédentes
  • Historique consultable par exercice
  • Graphiques de progression (charge, volume, 1RM estimé)
  • Mode hors-ligne partiel (PWA)
  • Thème sombre par défaut
  • API REST pour intégrations tierces

L'architecture technique utilise React 18 + Vite côté frontend, Node.js + Fastify côté backend, et Prisma + PostgreSQL comme couche de données. Le code est modulaire, typé strict, et bien structuré pour servir de base à des personnalisations. Idéal pour un développeur qui veut forker et adapter à son flow.

Installation

Via Docker Compose

services:
  workout-db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: workout
      POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme}
      POSTGRES_DB: workout
    volumes:
      - workout_db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U workout"]
      interval: 10s
      timeout: 5s
      retries: 5

  workout-api:
    build:
      context: https://github.com/c-hive/gha-dev.git
      dockerfile: apps/api/Dockerfile
    restart: unless-stopped
    depends_on:
      workout-db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgres://workout:${DB_PASSWORD:-changeme}@workout-db:5432/workout
      JWT_SECRET: ${JWT_SECRET:-changez-moi}
      PORT: 3001
    ports:
      - "3001:3001"

  workout-web:
    build:
      context: https://github.com/c-hive/gha-dev.git
      dockerfile: apps/web/Dockerfile
    restart: unless-stopped
    depends_on:
      - workout-api
    environment:
      VITE_API_URL: http://localhost:3001
    ports:
      - "3000:80"

volumes:
  workout_db:

Installation manuelle (Monorepo)

git clone https://github.com/c-hive/gha-dev.git
cd gha-dev
pnpm install
# Backend
pnpm --filter api db:migrate
pnpm --filter api dev
# Frontend
pnpm --filter web dev

Configuration

  • DATABASE_URL : PostgreSQL
  • JWT_SECRET : token d'authentification
  • Personnalisation des exercices et routines via l'UI (pas de YAML à maintenir)
  • Import/Export JSON pour migrer ou sauvegarder

Alternatives

Open source :

  • app-wger : plus complet (nutrition incluse) mais plus lourd
  • app-workout-cool : design moderne, davantage de features sociales
  • app-sparkyfitness : intègre nutrition et santé
  • app-exercise-diary : encore plus minimaliste, focus journal simple
  • Hevy (clone libre) : interface familière pour anciens utilisateurs de Strong

Propriétaire :

  • Strong : référence iOS/Android, payante
  • Hevy : version freemium, populaire
  • FitNotes : Android gratuit

Sécurité

  • Changer DB_PASSWORD et JWT_SECRET par défaut
  • HTTPS obligatoire via reverse proxy
  • Sauvegarder le volume workout_db régulièrement (pg_dump)
  • Si exposition publique : rate-limit sur l'API et 2FA si multi-utilisateurs

Ressources

Pages Liées