Files
wiki/Catalogue-Self-Hosted/apps/app-fitbit-health-dashboard.md
2026-06-09 18:40:21 +02:00

125 lines
4.9 KiB
Markdown

---
title: Fitbit Health Dashboard
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, fitness, fitbit, dashboard, python, fastapi, visualization]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=fitness, https://github.com/nicwortel/fitbit-health-dashboard]
---
# Fitbit Health Dashboard ❤️
> Dashboard **personnel** pour visualiser et analyser les données Fitbit (poids, sommeil, fréquence cardiaque, activité). Python/FastAPI avec graphiques riches en HTML/Plotly.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://nicwortel.nl/fitbit-health-dashboard/ |
| **GitHub** | https://github.com/nicwortel/fitbit-health-dashboard |
| **License** | MIT |
| **Langage** | Python (FastAPI) |
| **Étoiles** | ⭐70 (selfh.st rank) |
| **Dernière MAJ** | 2026-04-10 |
| **Catégorie** | [[cat-fitness]] |
## Description
**Fitbit Health Dashboard** est une application web **personnelle** qui se connecte à l'API Fitbit et centralise toutes vos **données de santé** dans un tableau de bord interactif et esthétique. L'idée est de **garder le contrôle** sur les données de votre montre/balance Fitbit sans dépendre des changements d'interface de l'app officielle.
Fonctionnalités :
- **Poids** : courbes d'évolution, moyennes mobiles, IMC
- **Sommeil** : durée, phases, efficacité, régularité
- **Activité** : pas, calories, distance, étages, zones fréquence cardiaque
- **Fréquence cardiaque au repos** : tendances long terme
- **Hydratation et alimentation** (si trackés sur Fitbit)
- **Plages de dates** personnalisables
- **Graphiques interactifs** Plotly (zoom, export PNG)
- **Mode sombre**
L'**architecture** est volontairement simple : backend **FastAPI** qui parle à l'API Fitbit, **SQLite** pour le cache des données (très efficace, pas besoin de Postgres), et frontend statique avec **htmx + Plotly** pour des graphes riches sans build JS complexe. Le projet est maintenu par un développeur néerlandais et reste proche de ses besoins personnels (qualité > exhaustivité).
## Installation
### Via Docker Compose
```yaml
services:
fitbit-dashboard:
build: https://github.com/nicwortel/fitbit-health-dashboard.git
restart: unless-stopped
environment:
FITBIT_CLIENT_ID: ${FITBIT_CLIENT_ID}
FITBIT_CLIENT_SECRET: ${FITBIT_CLIENT_SECRET}
FITBIT_REDIRECT_URI: http://localhost:8000/oauth/callback
SESSION_SECRET: ${SESSION_SECRET:-changez-moi-32-caracteres}
TZ: Europe/Paris
volumes:
- fitbit_data:/app/data
ports:
- "8000:8000"
volumes:
fitbit_data:
```
### Étape préliminaire obligatoire
1. Créer une app sur https://dev.fitbit.com/apps/new
2. **OAuth 2.0 Application Type** : « Server »
3. **Callback URL** : `http://localhost:8000/oauth/callback` (adapter à votre domaine)
4. Renseigner les credentials dans `.env`
### Installation manuelle
```bash
git clone https://github.com/nicwortel/fitbit-health-dashboard.git
cd fitbit-health-dashboard
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # éditer avec vos credentials
uvicorn app.main:app --host 0.0.0.0 --port 8000
```
## Configuration
- `FITBIT_CLIENT_ID` / `FITBIT_CLIENT_SECRET` : credentials dev.fitbit.com
- `FITBIT_REDIRECT_URI` : doit correspondre EXACTEMENT à celui déclaré sur dev.fitbit.com
- `SESSION_SECRET` : secret pour les sessions Flask (32+ caractères)
- `TZ` : fuseau horaire (impacte les calculs de jour)
- Le **cache SQLite** accélère drastiquement les affichages (l'API Fitbit est très limitée en quotas)
## Alternatives
**Open source** :
- [[app-statistics-for-strava]] : même philosophie, mais pour Strava
- **HealthData-Export / Gadgetbridge** : pour exporter les données hors cloud
- **QuantifyME** : quantifier soi open source
**Propriétaire** :
- **Fitbit app (officielle)** : gratuite, complète, mais ferme le contrôle des données
- **Fitbit Premium** : ~9€/mois, analyses avancées
**Notes** : Google (propriétaire de Fitbit) a **déprécié certaines API** au profit de Google Fit — vérifier la compatibilité actuelle. Si vos appareils sont récents, privilégiez un **export Google Takeout** + [[app-statistics-for-strava]].
## Sécurité
- **Credentials Fitbit** = accès à toutes vos données de santé : ne jamais commit le `.env`
- Mettre en place **HTTPS obligatoire** (reverse proxy)
- Sauvegarder le volume `fitbit_data` (SQLite) régulièrement
- Considérer un **firewall** : ce dashboard est personnel, pas de besoin d'accès public
## Ressources
- **GitHub** : https://github.com/nicwortel/fitbit-health-dashboard
- **Démo de l'auteur** : https://nicwortel.nl/fitbit-health-dashboard/
- **API Fitbit** : https://dev.fitbit.com/build/reference/
- **selfh.st** : https://selfh.st/apps/?tag=fitness
## Pages Liées
- [[cat-fitness]]
- [[recettes-docker-compose]]
- [[app-statistics-for-strava]] — philosophie similaire, pour Strava
- [[app-fittrackee]] — pour activités outdoor