L'idée
Début janvier 2026, je me suis lancé un défi simple : faire des pompes tous les jours. Pas un programme de musculation complexe — juste une habitude quotidienne, mesurable, avec un objectif clair. Et comme je suis développeur, j'ai naturellement construit un écosystème complet pour ça.
Le concept : gamification à la Duolingo
L'inspiration vient directement de Duolingo et de sa mécanique de streak (série de jours consécutifs). Le principe est psychologiquement puissant : une fois qu'on a 30 jours de streak, on ne veut surtout pas casser la chaîne.
L'application web (portfolio)
Le tracker est d'abord né comme un composant intégré au portfolio :
- Un stepper quotidien : +5 / -5 pompes pour ajuster rapidement
- Un calendrier visuel : chaque jour validé est coché, les jours manqués sont marqués
- Un compteur de streak : le nombre de jours consécutifs sans interruption
- Des statistiques : total, moyenne, progression mensuelle
L'application Android native
Pour rendre la validation encore plus simple au quotidien, j'ai développé une application Android native en Kotlin :
- Architecture MVVM avec ViewModel, LiveData et Room pour le cache local
- Retrofit 2 pour la synchronisation avec le backend
- Widget home screen : un widget qui affiche le streak et le statut du jour directement sur l'écran d'accueil — impossible de l'ignorer en allumant le téléphone
- WorkManager : synchronisation en arrière-plan toutes les 30 minutes
- Swipe to refresh : pull-to-refresh pour forcer la synchronisation
- Light mode : design épuré avec le même style beige/or que le portfolio
Authentification Google OAuth
L'application a évolué d'un outil purement personnel vers un système multi-utilisateur avec authentification :
- Google Sign-In via Credential Manager sur Android
- Vérification stateless des Google ID Tokens côté backend (compatible serverless Vercel)
- Upsert automatique des utilisateurs à la première connexion
- Données scopées : chaque utilisateur ne voit que ses propres données
- Pas de sessions, pas de cookies — juste un token dans le header
Authorization: Bearer
Progression
- Janvier 2026 : objectif de 20 pompes/jour — phase d'installation de l'habitude
- Février 2026 : passage à 25 pompes/jour — le corps s'adapte, on monte la barre
- L'objectif augmentera progressivement au fil des mois
Stack technique
- Backend : Nuxt 3 / Nitro, Drizzle ORM, PostgreSQL Neon serverless, déployé sur Vercel
- Auth : Google OAuth 2.0 (google-auth-library)
- Android : Kotlin, MVVM, Retrofit 2, Room 2.6, Credential Manager, WorkManager
- Web : composant Vue avec stepper interactif et calendrier responsive