Initial vault setup
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user