MKO — Portfolio
Mohamed Karim OuertataniIngénieur Full-StackFull-Stack Engineer
MobileIA

Vibra

Sorties vélo, randonnée & camping

Novembre 2025 – Janvier 2026 · Projet d'équipe · ESPRIT

0vue
Vibra — 1
Vibra — 3
Vibra — 2

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)

Kotlin 40 700TypeScript 12 700

É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)

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)

Vibra — Sorties vélo, randonnée & camping — Captures d'écran 1
Vibra — Sorties vélo, randonnée & camping — Captures d'écran 2
Vibra — Sorties vélo, randonnée & camping — Captures d'écran 3
Vibra — Sorties vélo, randonnée & camping — Captures d'écran 4

Un 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