Vibra
Sorties vélo, randonnée & camping
Novembre 2025 – Janvier 2026 · Projet d'équipe · ESPRIT



Réseau social d'aventures en plein air, en natif Android (Kotlin · Jetpack Compose) et iOS (Swift) autour d'un même backend NestJS : organiser et rejoindre des sorties vélo, randonnée ou camping, discuter en temps réel et recevoir des recommandations calculées par machine learning.
En chiffres
0
applications natives (Android & iOS)
0
modules NestJS
0
gateways WebSocket temps réel
0
lignes de code (environ)
Étude de cas
Le défi
Les passionnés d'activités de plein air organisent leurs sorties sur plusieurs applications à la fois : un groupe de messagerie, une carte, un réseau social. Il fallait tout réunir, sur Android et iOS en natif, avec du temps réel fiable et des recommandations vraiment personnalisées, le tout en équipe.
Architecture
Applications
- Android : Kotlin, Jetpack Compose, MVVM
- iOS : Swift
- Room (hors ligne), WorkManager
API NestJS
- 16 modules, REST + JWT
- 3 gateways Socket.IO
- Swagger / OpenAPI
- Script Python de recommandation
Données
- MongoDB (Mongoose)
- Cloudinary (médias)
- Notifications en base
Services externes
- Firebase Cloud Messaging
- Google Maps
- OpenRouteService
- API IA Flask (Render)
Applications
- Android : Kotlin, Jetpack Compose, MVVM
- iOS : Swift
- Room (hors ligne), WorkManager
API NestJS
- 16 modules, REST + JWT
- 3 gateways Socket.IO
- Swagger / OpenAPI
- Script Python de recommandation
Données
- MongoDB (Mongoose)
- Cloudinary (médias)
- Notifications en base
Services externes
- Firebase Cloud Messaging
- Google Maps
- OpenRouteService
- API IA Flask (Render)
Choix techniques
01
Du machine learning en production
NestJS appelle un script Python qui projette préférences et sorties dans des clusters KMeans pré-entraînés, et un matching KNN propose des membres compatibles.
02
Trois canaux temps réel
Chat de groupe, messages privés et sondages passent chacun par leur propre gateway Socket.IO : votes et messages arrivent en direct, avec statut en ligne et accusés de lecture.
03
Des règles métier garanties côté serveur
Un chat est créé pour chaque sortie, une sortie camping exige un camping associé, seuls les participants acceptés peuvent noter, et la note moyenne de l'organisateur est recalculée.
04
Une app mobile solide
Architecture MVVM + Repository, sorties sauvegardées hors ligne avec Room, détection de l'expiration du JWT et connexion Google.
Fonctionnalités
- Création d'une sortie en 2 étapes : informations, puis itinéraire sur la carte calculé à pied ou à vélo (OpenRouteService)
- Exploration avec onglets Explore / Recommandées / Abonnements, recherche vocale et filtres par date et par proximité (5 à 200 km)
- Demandes de participation acceptées ou refusées par l'organisateur ; un participant accepté rejoint automatiquement le chat de groupe
- Messagerie temps réel (Socket.IO) : chat de groupe par sortie avec images, fichiers, messages vocaux, position et sondages en direct, plus messages privés
- Fil communautaire : publications avec photos, hashtags, mentions, likes et commentaires
- Recommandations de sorties (KMeans) et de membres compatibles (KNN), à partir d'un questionnaire de préférences
- Réputation : note de 1 à 5 étoiles après chaque sortie terminée, moyenne affichée sur le profil de l'organisateur
- Sorties sauvegardées hors ligne (Room), notifications push (Firebase) et mode sombre / clair
Captures d'écran (20)




Un mot sur ce projetUn mot sur ce projet
Une question, un avis, une idée ?
Écrivez-moi directement d'ici. Votre message n'est pas publié : je suis le seul à le lire.
Privé : jamais affiché sur le site