Initial vault setup
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
---
|
||||
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
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
- **GitHub** : https://github.com/c-hive/gha-dev
|
||||
- **selfh.st** : https://selfh.st/apps/?tag=fitness
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-fitness]]
|
||||
- [[recettes-docker-compose]]
|
||||
- [[app-wger]] — version plus riche
|
||||
- [[app-workout-cool]] — design moderne
|
||||
- [[app-exercise-diary]] — minimaliste
|
||||
Reference in New Issue
Block a user