← Retour aux projets

SAE · Application mobile & infrastructure

FitLab — Le laboratoire du sport

Application mobile de suivi sportif développée en équipe. FitLab centralise les entraînements, la nutrition, les abonnements et la relation coach/athlète, avec une architecture moderne basée sur Flutter, Supabase, Docker, Nginx et une démarche de sécurisation réseau.

Aperçu du projet FitLab

Objectif

À quoi sert le projet ?

FitLab est une application pensée pour centraliser le suivi sportif d’un utilisateur : entraînements, nutrition, progression, abonnements et accompagnement par un coach.

Le projet distingue plusieurs profils : athlètes, coachs et administrateurs. Chaque profil dispose de besoins différents, de la consultation des performances jusqu’à la gestion complète des utilisateurs, rôles, données et aspects de sécurité.

Fonctionnalités

Ce que permet l’application

Suivi sportif

Suivi des entraînements, historique, objectifs et progression quotidienne.

Nutrition

Gestion des repas, données nutritionnelles et suivi alimentaire personnalisé.

Coaching

Choix d’un coach, affectation de programmes et supervision des athlètes.

Abonnements

Modèle freemium avec plusieurs offres et logique de paiement prévue.

Communauté

Demandes d’amis, messagerie et interactions entre utilisateurs.

Administration

Gestion des rôles, utilisateurs, données et sécurité de la plateforme.

Architecture

Architecture technique

FitLab repose sur une architecture moderne en plusieurs couches. Le client Flutter communique avec une API via HTTPS/TLS. Supabase assure l’authentification, la base PostgreSQL, le temps réel et le stockage. L’infrastructure est pensée pour isoler le backend et exposer uniquement un point d’entrée maîtrisé.

Client Flutter Nginx API Backend Supabase

Base de données

Supabase & PostgreSQL

Supabase a été utilisé comme backend tout-en-un : authentification, base PostgreSQL, données temps réel, Edge Functions et stockage. Ce choix permet une communication directe avec le SDK Flutter tout en gardant une base relationnelle robuste.

  • Base PostgreSQL structurée avec plusieurs tables interconnectées.
  • Gestion des comptes utilisateurs et de l’authentification.
  • Relations entre athlètes, coachs, entraînements, repas, messages et abonnements.
  • Synchronisation et logique temps réel selon les besoins applicatifs.

Réseau & infrastructure

Déploiement et isolation

La partie réseau repose sur une logique de conteneurisation avec Docker. Le frontend Flutter Web est servi via Nginx, tandis que le backend reste isolé dans le réseau Docker interne. L’utilisateur ne contacte qu’un point d’entrée unique, ce qui simplifie l’architecture et réduit l’exposition du backend.

  • Déploiement sur VM Ubuntu.
  • Docker et Docker Compose pour lancer les services.
  • Nginx comme serveur de fichiers Flutter Web et reverse proxy.
  • Backend non exposé directement à Internet.
  • Résolution des problématiques Flutter Web : CanvasKit, CSP, assets et Single Page Application.

Sécurité

Sécurisation mise en place

Une attention particulière a été portée à la sécurité : durcissement SSH, isolation du backend, reverse proxy, en-têtes de sécurité, Content Security Policy, WAF ModSecurity, tests de sécurité et supervision.

  • Connexion SSH par clé uniquement.
  • Désactivation du mot de passe et de l’accès root.
  • Protection contre XSS, clickjacking et content sniffing via headers.
  • Content Security Policy pour limiter les sources chargées par le navigateur.
  • WAF ModSecurity pour filtrer les requêtes malveillantes.
  • Scans de vulnérabilités avec OWASP ZAP, Nikto et Wapiti.

Supervision & continuité

Monitoring, PCA/PRA

Le projet intègre une réflexion sur la supervision et la continuité de service. Prometheus, Grafana et Node Exporter permettent de suivre les ressources serveur, tandis que des sauvegardes et procédures de reprise assurent une meilleure résilience.

  • Surveillance CPU, RAM, disque et trafic réseau.
  • Détection des comportements anormaux.
  • Sauvegarde automatique des configurations critiques.
  • Procédure de reconstruction du serveur en moins d’une heure.

Compétences mobilisées

Ce que ce projet démontre

Flutter Supabase PostgreSQL Docker Nginx Reverse proxy VM Ubuntu SSH sécurisé Headers HTTP CSP ModSecurity OWASP ZAP Nikto Wapiti Prometheus Grafana

Apports

Ce que ce projet m’a apporté

FitLab m’a permis de travailler sur un projet complet mêlant application mobile, base de données, backend, infrastructure et cybersécurité. Mon rôle sur la partie réseau m’a permis de renforcer mes compétences en déploiement, reverse proxy, sécurisation de serveur, Docker et supervision.

Le projet m’a aussi permis d’aborder des problématiques réalistes : exposition minimale des services, sécurisation des communications, durcissement d’une VM, gestion des erreurs, logs, tests de sécurité et continuité d’activité.

Aperçu du projet

Page principale FitLab

Présentation FitLab

Nutrition

Interface nutrition FitLab

Entraînements

Interface entraînements FitLab

Abonnements

Interface abonnements FitLab

Architecture réseau/sécu

Infrastructure réseau FitLab