Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for GoRide

About the Project

Inspiration

Notre projet est né d’un problème simple : faciliter les déplacements tout en permettant aux passagers et aux conducteurs de se retrouver facilement et en toute sécurité.

Nous avons imaginé une plateforme de covoiturage qui met en relation des passagers et des conducteurs, tout en intégrant la géolocalisation en temps réel. L’objectif est de proposer une solution adaptée aux besoins de déplacement, particulièrement dans un contexte où il peut être difficile de trouver rapidement un conducteur disponible ou de suivre précisément un trajet.

Au-delà du simple covoiturage, nous voulions créer une application capable de gérer l’ensemble du processus : création d'une demande de trajet, recherche et sélection d'un conducteur, réservation, suivi du trajet et localisation du véhicule.

What We Built

Notre application permet à un passager de créer une demande de trajet en indiquant notamment :

  • l'adresse de départ ;
  • l'adresse d'arrivée ;
  • la date et l'heure souhaitées ;
  • le nombre de places nécessaires.

Les conducteurs peuvent ensuite consulter les demandes correspondant à leur disponibilité et proposer leurs services.

Chaque conducteur possède un profil contenant ses informations ainsi que celles de son véhicule. Le système prend également en compte le tarif par kilomètre, permettant de calculer et d'afficher un prix adapté au trajet.

Géolocation

La géolocalisation constitue une fonctionnalité centrale de notre application.

Nous utilisons la position GPS du téléphone pour permettre :

  • la localisation du conducteur ;
  • le suivi de la position du véhicule pendant le trajet ;
  • l'affichage de la position sur une carte ;
  • la récupération de la position la plus récente du conducteur ;
  • le suivi du trajet entre le point de départ et le point d'arrivée ;
  • une meilleure compréhension de la progression du trajet par le passager.

Les positions sont associées au trajet concerné afin de permettre au système de distinguer les différents trajets et de conserver les informations nécessaires au suivi.

How We Built It

Nous avons conçu l'application selon une architecture frontend mobile + backend API + base de données.

Le backend repose sur Node.js avec NestJS, avec Prisma pour communiquer avec la base de données. L'authentification est protégée par JWT, tandis que les différents rôles permettent de distinguer les fonctionnalités accessibles aux passagers, conducteurs et administrateurs.

La partie mobile utilise React Native, permettant de construire une application adaptée aux smartphones Android.

L'architecture principale peut être résumée ainsi :

React Native Mobile App ↓ REST API ↓ Node.js / NestJS ↓ Prisma ↓ PostgreSQL / Database

Pour la géolocalisation, l'application mobile récupère les coordonnées GPS du conducteur et les transmet au backend. Ces informations peuvent ensuite être utilisées pour afficher la position actuelle ou la dernière position connue sur la carte.

Main Features

👤 Gestion des utilisateurs

L'application distingue plusieurs types d'utilisateurs :

  • Passager : recherche un trajet, effectue une réservation et suit son trajet.
  • Conducteur : renseigne son profil, son véhicule, son tarif et gère les demandes de réservation.
  • Administrateur : peut gérer et contrôler les utilisateurs et les différentes données de la plateforme.

🚗 Gestion des véhicules

Un conducteur peut enregistrer son véhicule avec différentes informations :

  • marque ;
  • modèle ;
  • immatriculation ;
  • nombre de places ;
  • documents nécessaires ;
  • informations liées à la carte grise.

Le système vérifie également certaines informations du conducteur avant de lui permettre d'utiliser pleinement les fonctionnalités de conduite.

📍 Gestion des trajets

Un trajet contient notamment :

  • le départ ;
  • l'arrivée ;
  • les coordonnées GPS du départ et de l'arrivée ;
  • la date et l'heure ;
  • le nombre de places disponibles ;
  • le prix par place ;
  • le conducteur ;
  • le véhicule utilisé.

📱 Réservation

Le passager peut demander une réservation pour un trajet.

Le conducteur peut ensuite :

  • accepter la demande ;
  • refuser la demande ;
  • consulter les réservations liées à ses trajets.

Le système permet ainsi de suivre l'état de chaque réservation.

🗺️ Suivi géographique

Pendant le trajet, la position GPS du conducteur peut être enregistrée régulièrement.

Cela permet au passager de voir l'évolution du déplacement et de connaître la position récente du véhicule.

Cette fonctionnalité constitue l'une des principales différences entre une simple plateforme de réservation et notre solution de covoiturage avec suivi géographique.

What We Learned

La réalisation de ce projet nous a permis d'approfondir plusieurs domaines du développement logiciel.

Nous avons notamment appris à :

  • concevoir une architecture backend/frontend ;
  • développer une API REST avec NestJS ;
  • utiliser Prisma pour la gestion des données ;
  • concevoir une base de données relationnelle ;
  • gérer l'authentification avec JWT ;
  • implémenter une gestion des rôles et des permissions ;
  • développer une application mobile avec React Native ;
  • utiliser les données GPS dans une application mobile ;
  • gérer les relations entre utilisateurs, véhicules, trajets et réservations ;
  • gérer des données qui évoluent en temps réel ;
  • tester et corriger les problèmes rencontrés entre le frontend, le backend et la base de données.

Nous avons également compris qu'un projet de ce type ne consiste pas uniquement à développer des interfaces. Il faut également réfléchir à la sécurité, à la cohérence des données, aux règles métier, à l'expérience utilisateur et à la fiabilité des informations de localisation.

Challenges We Faced

L'un des principaux défis a été de concevoir une logique cohérente entre les différents acteurs de la plateforme.

Par exemple, un passager ne doit pas pouvoir effectuer certaines actions réservées au conducteur, tandis qu'un conducteur doit avoir certaines informations complètes avant de pouvoir proposer ses services.

La gestion de la géolocalisation a également représenté un défi important. Il fallait gérer les permissions GPS sur le téléphone, récupérer correctement les coordonnées, les transmettre au serveur et les associer au bon trajet.

Nous avons également rencontré des difficultés liées à la communication entre l'application mobile et le backend, notamment lors de l'authentification, des requêtes API et de la gestion des erreurs.

Ces difficultés nous ont permis d'améliorer progressivement l'architecture du projet et de mieux comprendre le fonctionnement d'une application distribuée composée de plusieurs technologies.

Future Improvements

Notre objectif est de continuer à améliorer la plateforme avec notamment :

  • un suivi GPS encore plus fluide en temps réel ;
  • l'intégration d'itinéraires routiers ;
  • une estimation plus précise du prix et de la durée du trajet ;
  • des notifications en temps réel ;
  • un système de notation conducteur/passager ;
  • une meilleure gestion des paiements ;
  • l'amélioration de la sécurité et de la vérification des utilisateurs ;
  • l'optimisation des performances lorsque plusieurs utilisateurs utilisent simultanément le système.

Conclusion

Ce projet nous a permis de transformer une idée de covoiturage en une véritable solution logicielle combinant développement mobile, backend, base de données, authentification, gestion des utilisateurs et géolocalisation.

Notre objectif n'est pas seulement de permettre à deux personnes de partager un trajet, mais de construire une plateforme capable de rendre le déplacement plus simple, plus organisé et plus transparent, grâce notamment au suivi géographique et à la gestion numérique de l'ensemble du processus.

Share this project:

Updates

Submission history