BenchRep
Application mobile de musculation avec système d'abonnement freemium et coaching intelligent
Description du projet
BenchRep est une application mobile complète permettant le suivi d'entraînements de musculation, avec un backend API Laravel robuste et une architecture orientée domaine métier.
Le projet implémente un modèle freemium à 3 niveaux (FREE avec publicités, PREMIUM sans pubs, AI_COACH avec coaching IA à venir), gérant plus de 100 exercices, des programmes personnalisés et un système de statistiques avancées.
L'objectif est de fournir une expérience utilisateur fluide tout en garantissant une architecture scalable, maintenable et testée.
Technologies utilisées
Backend : Laravel 12, PHP 8.3+, PostgreSQL, Redis, AWS S3
Mobile : React Native, Expo Router, TypeScript
Paiements & Monétisation : RevenueCat, Google AdMob
Notifications & Monitoring : Expo Notifications, Sentry
Qualité & Tests : PHPStan, Rector, PHPUnit, GitHub Actions
Architecture & Principes
Domain-Driven Design (DDD)
Organisation par domaines métier distincts (User, Exercise, Program, Workout, Billing, Stats, Motivation) avec séparation stricte des responsabilités. Chaque domaine contient ses propres Services, Repositories, DTOs, Enums et Policies.
Clean Architecture
Controllers fins : délèguent aux Services
Services : orchestration de la logique métier
Repositories : encapsulation de l'accès base de données
DTOs immutables : typage strict des entrées/sorties
Policies : autorizations centralisées
Provider-Agnostic Billing
Architecture adapter pattern permettant d'abstraire le provider de paiement (actuellement RevenueCat), facilitant un changement futur sans réécriture du code métier.
Fonctionnalités clés
Système freemium intelligent
FREE : 1 programme custom, stats 7 jours, avec publicités
PREMIUM : programmes illimités, stats complètes, notifications motivation, sans pubs
AI_COACH : tout Premium + coaching IA (roadmap)
Middleware automatique restreignant l'accès selon le tier
Gestion complète de l'entraînement
Catalogue de 100+ exercices avec médias hébergés sur S3
Création de programmes personnalisés avec système d'Energy Level pour équilibrage automatique
Tracking en temps réel des workouts avec détection automatique des Personal Records
Calcul automatique du volume, calories et durée
Statistiques et progression
Stats globales, par programme et par exercice avec historique complet
Insights hebdomadaires/mensuels (fréquence, tendances, progression)
Limitation conditionnelle selon tier (7 jours FREE vs illimité PREMIUM)
Système de motivation contextuel
Messages générés automatiquement selon les achievements (PRs, streaks, progression)
Règles métier : célébrations, suggestions de repos, rappels d'inactivité
Affichage conditionnel réservé au tier PREMIUM
Onboarding personnalisé
Questionnaire complet : objectif, niveau d'expérience, gestion des blessures
Préférences multilingues (FR/EN) et système d'unités (kg/lbs)
Défis techniques relevés
Backend robuste et testé
Mise en place d'une architecture DDD stricte avec tests exhaustifs (unitaires, feature, policies, webhooks) garantissant un coverage >80%.
Analyse statique PHPStan niveau max pour éviter les régressions. Gestion des webhooks RevenueCat avec signature verification et synchronisation bidirectionnelle des abonnements.
Performance et scalabilité
Redis pour le cache et les queues asynchrones.
Optimisation des requêtes Eloquent et indexes stratégiques pour gérer de gros volumes de données.
Expérience mobile fluide
Design system complet avec theming, composants réutilisables et dark mode. Gestion native du keyboard et des safe areas iOS/Android.
Optimistic UI updates pour masquer la latence réseau. Intégration complète RevenueCat (offerings, restore purchases, sync entitlements).
Internationalisation complète
Traduction backend et frontend (API responses, validations, notifications push). Système i18next pour React Native avec contenu dynamique multilingue en base de données.
Monétisation et conformité
Affichage conditionnel des publicités AdMob selon le tier et le consentement utilisateur. Architecture billing agnostique permettant de changer de provider sans impact sur le code métier.
Système de premium granted pour offrir l'accès premium sans abonnement (beta testers, équipe).
Résultats
Application mobile moderne et scalable avec une architecture backend solide suivant les principes du Clean Code et du Domain-Driven Design.
Le système d'abonnement freemium permet de monétiser l'application tout en offrant une expérience gratuite fonctionnelle.
La stack technique choisie garantit la maintenabilité, la testabilité et l'évolutivité du projet pour les futures fonctionnalités (coaching IA, social features, programmes communautaires).