Vibra
Cycling, Hiking & Camping
November 2025 – January 2026 · Team project · ESPRIT



A social network for outdoor adventures, native on Android (Kotlin · Jetpack Compose) and iOS (Swift) around one NestJS backend: organize and join cycling, hiking or camping trips, chat in real time and get recommendations computed by machine learning.
By the numbers
0
native apps (Android & iOS)
0
NestJS modules
0
real-time WebSocket gateways
0
lines of code (approx.)
Case study
The challenge
Outdoor enthusiasts organize their trips across several apps at once: a messaging group, a map, a social network. The goal was to bring it all together, natively on Android and iOS, with reliable real time and truly personal recommendations, as a team.
Architecture
Apps
- Android: Kotlin, Jetpack Compose, MVVM
- iOS: Swift
- Room (offline), WorkManager
NestJS API
- 16 modules, REST + JWT
- 3 Socket.IO gateways
- Swagger / OpenAPI
- Python recommendation script
Data
- MongoDB (Mongoose)
- Cloudinary (media)
- Stored notifications
External services
- Firebase Cloud Messaging
- Google Maps
- OpenRouteService
- Flask AI API (Render)
Apps
- Android: Kotlin, Jetpack Compose, MVVM
- iOS: Swift
- Room (offline), WorkManager
NestJS API
- 16 modules, REST + JWT
- 3 Socket.IO gateways
- Swagger / OpenAPI
- Python recommendation script
Data
- MongoDB (Mongoose)
- Cloudinary (media)
- Stored notifications
External services
- Firebase Cloud Messaging
- Google Maps
- OpenRouteService
- Flask AI API (Render)
Technical choices
01
Machine learning in production
NestJS calls a Python script that maps preferences and trips into pre-trained KMeans clusters, and a KNN matching suggests compatible members.
02
Three real-time channels
Group chat, private messages and polls each have their own Socket.IO gateway: votes and messages arrive live, with online status and read receipts.
03
Business rules enforced by the server
Every trip gets a chat, a camping trip requires a campsite, only accepted participants can rate, and the organizer's average rating is recomputed.
04
A solid mobile app
MVVM + Repository architecture, trips saved offline with Room, JWT expiry detection and Google sign-in.
Key features
- Two-step trip creation: details, then a route on the map computed for walking or cycling (OpenRouteService)
- Explore / Recommended / Following tabs, voice search and filters by date and distance (5 to 200 km)
- Participation requests accepted or declined by the organizer; accepted members join the group chat automatically
- Real-time messaging (Socket.IO): a group chat per trip with images, files, voice messages, location and live polls, plus private messages
- Community feed: posts with photos, hashtags, mentions, likes and comments
- Trip recommendations (KMeans) and compatible members (KNN), based on a preferences questionnaire
- Reputation: a 1 to 5 star rating after each finished trip, averaged on the organizer's profile
- Trips saved offline (Room), push notifications (Firebase) and dark / light mode
Screenshots (20)




A word about this projectA word about this project
A question, an opinion, an idea?
Write to me right from here. Your message is not published: I am the only one who reads it.
Private: never shown on the site