← Projets

Suivi pompes quotidien

VueNuxtKotlinAndroidOAuthHealthGamification

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