--- title: Workout Challenge created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, fitness, challenge, gamification, typescript, react, social] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=fitness, https://github.com/MarcusJellinghaus/ChallengeTimer] --- # Workout Challenge 🏆 > Application de **défis sportifs gamifiés** écrite en TypeScript. Créez des challenges (nombre de répétitions, durée, fréquence), suivez votre progression et comparez-vous à vos amis. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://workout-challenge.app/ | | **GitHub** | https://github.com/MarcusJellinghaus/ChallengeTimer | | **License** | MIT | | **Langage** | TypeScript (React + Node.js) | | **Étoiles** | ⭐8 (selfh.st rank) | | **Dernière MAJ** | 2026-02-14 | | **Catégorie** | [[cat-fitness]] | ## Description **Workout Challenge** met l'accent sur la **gamification** de l'entraînement. Plutôt que de suivre passivement ses routines, l'application propose des **défis** (challenges) à objectif mesurable : « faire 1000 pompes en 30 jours », « courir 100 km en un mois », « tenir une planche 5 minutes ». Chaque challenge a un **tableau de progression**, des **badges**, et peut être partagé. Fonctionnalités : - **Défis prédéfinis** ou création personnalisée - **Tableau de bord** avec progression en temps réel - **Badges et récompenses** au franchissement d'étapes - **Partage** entre amis (lien, pas de réseau social centralisé) - **Timer intégré** pour certains types de défis (planche, burpees) - **Statistiques** globales L'**architecture** est **simple** : frontend **React + TypeScript**, backend **Node.js + Express + SQLite**. L'app est **légère**, facile à auto-héberger, et fonctionne aussi bien en solo (défis personnels) qu'en petit groupe familial. Le projet a une **petite communauté** de contributeurs et reste en évolution lente mais régulière. > **Note** : peu d'étoiles (⭐8) reflète un **projet de niche** mais maintenu. Idéal pour qui veut quelque chose de simple et gamifié sans la complexité des gros trackers. ## Installation ### Via Docker Compose ```yaml services: challenge-db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: challenge POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme} POSTGRES_DB: challenge volumes: - challenge_db:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U challenge"] interval: 10s timeout: 5s retries: 5 challenge-api: image: workout-challenge/api:latest restart: unless-stopped depends_on: challenge-db: condition: service_healthy environment: DATABASE_URL: postgres://challenge:${DB_PASSWORD:-changeme}@challenge-db:5432/challenge JWT_SECRET: ${JWT_SECRET:-changez-moi} ports: - "4000:4000" challenge-web: image: workout-challenge/web:latest restart: unless-stopped depends_on: - challenge-api ports: - "3000:80" volumes: challenge_db: ``` ### Installation manuelle ```bash git clone https://github.com/MarcusJellinghaus/ChallengeTimer.git cd ChallengeTimer npm install # Backend cd backend && npm run db:migrate && npm start # Frontend (autre terminal) cd ../frontend && npm install && npm run dev ``` ## Configuration - `DATABASE_URL` : PostgreSQL ou SQLite - `JWT_SECRET` : authentification - **Pas de fichier de configuration** : tout se configure dans l'UI - Les **défis** se créent depuis l'interface, avec règle de validation (quotidien, hebdomadaire, total) ## Alternatives **Open source** : - [[app-workout-tracker]] : plus généraliste - [[app-wingfit]] : philosophie similaire - [[app-exercise-diary]] : encore plus minimaliste - [[app-wger]] : référence complète - **Streaks** (apps) : la philosophie du « ne pas briser la série » **Propriétaire** : - **Fitbit Challenges** : si vous avez une Fitbit - **Strava Challenges** : liés à l'écosystème Strava - **Nike Run Club** : challenges running saisonniers ## Sécurité - **Changer** `DB_PASSWORD` et `JWT_SECRET` - **HTTPS obligatoire** via reverse proxy - Sauvegarder le volume `challenge_db` régulièrement - Si usage multi-utilisateurs ouvert : **rate-limit** sur l'API ## Ressources - **GitHub** : https://github.com/MarcusJellinghaus/ChallengeTimer - **selfh.st** : https://selfh.st/apps/?tag=fitness ## Pages Liées - [[cat-fitness]] - [[recettes-docker-compose]] - [[app-workout-tracker]] — version généraliste - [[app-wingfit]] — alternative simple - [[app-exercise-diary]] — minimaliste