Retour aux projets

Application d'engagement éco-social

Application mobile permettant aux utilisateurs de faciliter l'engagement écologique et social autour de chez soi.

React NativeNestJSNode.jsPostgreSQLPostGISNeo4jRedisDockerWebSocketgRPC

Contexte

Ce projet a été réalisé dans le cadre d'EPITA, en groupe de 4 étudiants, sur une période de plusieurs mois. L'objectif était de créer une application mobile qui encourage l'engagement écologique et social des utilisateurs dans leur communauté locale. Elle propose plusieurs fonctionnalités répondant à des problématiques que nous avons identifiées comme la difficulté de trouver des événements locaux qui nous correspondent. L'application permet aux utilisateurs de découvrir des événements autour de soi qui sont suggérés en fonction de ses intérêts et d'interagir avec d'autres membres de la communauté.

Architecture

Dans une démarche de découverte de technologies, nous avons mis en place une architecture moderne et très solide afin de pouvoir soutenir une charge importante d'utilisateurs. L'application repose sur une architecture microservices, implémentant un Transactionnal Outbox Pattern pour garantir la cohérence des données entre les services. Nous avons utilisé NestJS pour le backend, PostgreSQL avec PostGIS pour la gestion des données géospatiales, Neo4j pour les relations entre les utilisateurs et les événements, le protocole gRPC pour la communication entre les services, et Redis pour la mise en cache et la communication asynchrone. Le frontend mobile a été développé avec React Native, offrant une expérience utilisateur fluide et réactive.

Contributions & Résultats

J'ai principalement contribué au développement du micro-service de gestion des utilisateurs, ainsi que l'implémentation de la gestion des tâches asynchrones dans l'Outbox. J'ai également participé à la conception de l'architecture globale et à la mise en place de tests unitaires et d'intégration. Ce projet a été un énorme défi technique, mais cela nous a permis d'acquérir une expérience précieuse dans le développement Backend.