Grindrise
Stack technique
Contexte
Grindrise est une application mobile de suivi sportif (course, musculation et autres sports d'endurance) qui ajoute une couche de gamification RPG pour entretenir la régularité. Le joueur choisit une classe, gagne de l'XP à chaque séance, monte de niveau et débloque des fragments de récit. L'enjeu central est de rendre cette progression crédible : comme toute métrique saisie est falsifiable, le serveur est seul à attribuer l'XP, selon un barème pensé pour que tricher rapporte peu. Le projet est en développement actif : la boucle séance → XP → niveau fonctionne de bout en bout, tandis que l'historique, les analytics de progression et le premier build mobile publié restent à venir.
Fonctionnalités clés
- Onboarding guidé en plusieurs étapes (bienvenue, choix du sport, choix de la classe) puis connexion sans mot de passe par code à usage unique reçu par email. Le brouillon est conservé si l'utilisateur quitte l'app pour aller chercher son code.
- Enregistrement de séances par sport avec calcul d'XP côté serveur : 60 XP de présence et jusqu'à 40 XP d'effort sur une courbe concave. Des garde-fous anti-triche s'appliquent (deux séances créditées par jour, 30 minutes minimum entre deux, 7 jours d'antériorité maximum). Une animation annonce le palier franchi.
- Suivi de musculation exercice par exercice et série par série, avec un catalogue filtrable par groupe musculaire. L'utilisateur peut créer ses propres exercices, suivre des statistiques de séance en direct et consulter un récapitulatif final.
- Programmes d'entraînement personnalisés, organisés en jours types avec exercices réordonnables par glisser-déposer. Une séance peut être démarrée directement depuis un jour type.
- Streak calculé en jours locaux selon le fuseau horaire du joueur, avec des bonus fixes aux paliers (3, 7, 14, 30 jours, puis tous les 30 jours).
- Système narratif en cours de construction : le mécanisme de déblocage (trame principale liée au niveau global, trames annexes par sport) est en place côté serveur, le contenu et le codex restent à intégrer. Des emails de passage de niveau sont envoyés, avec un désabonnement en un clic.
Ce que le projet démontre
Ce projet illustre une capacité à concevoir un système complet de bout en bout (mobile, API, base, infrastructure) en raisonnant d'abord en termes de modèle de menace. Le client n'écrit jamais d'XP, la RLS est testée automatiquement et le barème est conçu pour que tricher rapporte peu. Il montre aussi une vraie discipline d'ingénierie : logique métier isolée en fonctions pures testées cas limite par cas limite, transactions atomiques en base, compromis explicitement documentés dans le code (vérification JWT locale contre révocation immédiate, geste en thread JS contre dépendance native) et un déploiement conteneurisé durci sur deux environnements isolés. Enfin, la réflexion produit est visible dans des choix comme le retrait du bonus d'effort en musculation (le tonnage est trop facile à gonfler) ou le streak calé sur le fuseau local du joueur.