Retour aux outils
CommunicationIntermédiaireOpen sourceAuto-hébergeable

Workout Challenge

Application de **défis sportifs gamifiés** écrite en TypeScript. Créez des challenges (nombre de rép

MAJ 2026-06-14
Workout Challenge
Code source★ 0

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

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éeValeur
Site webhttps://workout-challenge.app/
GitHubhttps://github.com/MarcusJellinghaus/ChallengeTimer
LicenseMIT
LangageTypeScript (React + Node.js)
Étoiles⭐8 (selfh.st rank)
Dernière MAJ2026-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

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

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