Montagne Divider
photo projet picsou

Informations clefs

Durée

10 semaines

Nombre de participant

2 personnes

Language
  • TypeScript
  • Docker
  • Flutter
  • Rust
  • Alpine
  • PostgreSQL
  • Figma
Compétences
  • scrum
  • présentation oral
  • autonome
  • travail d'équipe
  • intégration culturelle
Wireframe

Wireframe

Documentation

Documentation

Objectifs

Le projet "Picsou" a pour objectif de concevoir une application mobile visant à simplifier la gestion des dépenses au sein de groupes, notamment les colocations, en répondant aux problèmes rencontrés avec les solutions existantes comme Tricount. L'application se distingue par l'intégration d'une messagerie pour faciliter la communication et les demandes de remboursement entre utilisateurs, comblant ainsi une lacune de Tricount. De plus, "Picsou" vise à améliorer la gestion des dépenses complexes et des sous-totaux par utilisateur, ce qui constitue une faiblesse des outils actuels. L'objectif est de centraliser les fonctionnalités de gestion des factures et de création de dettes pour optimiser le temps des utilisateurs. L'application est conçue pour être adaptable à toutes les plateformes (Android, iOS, tablettes, ordinateurs) grâce à l'utilisation de Flutter. La sécurité et la performance sont assurées par l'hébergement des données sur une base de données PostgreSQL et la communication via une API développée en Rust. Le déploiement est simplifié par l'utilisation de conteneurs Docker pour l'API et la base de données, permettant une migration aisée vers des serveurs cloud et une mise à l'échelle horizontale. Le projet est développé selon la méthodologie SCRUM, avec des sprints de deux semaines pour la planification et le suivi des fonctionnalités, et bénéficie d'une intégration et d'un déploiement continus pour l'API.

Gestion de projet

Dans le cadre du projet "Picsou", la gestion de projet a été structurée autour de la méthodologie SCRUM afin d'optimiser et d'accélérer le développement. Des itérations de travail de deux semaines, appelées sprints, ont été mises en place, avec une réunion en début de sprint pour définir les fonctionnalités à développer et attribuer les tâches, ainsi que les délais associés. Une seconde réunion à la fin du sprint permettait de partager le travail réalisé, de discuter des problèmes rencontrés et d'ajuster les étapes futures si nécessaire. Pour la conception et la modélisation, plusieurs outils ont été utilisés. Figma a servi pour la conception de l'interface et de l'architecture de l'application, ainsi que pour la modélisation de la base de données. Des maquettes de modélisation de la base de données, des wireframes de l'application, les différentes routes de l'API REST, et des clarifications sur les données acceptées ou non par l'API ont été réalisées sur Figma. La plateforme Azure DevOps a été employée pour la gestion du projet SCRUM. En ce qui concerne le développement et les tests, GitHub a été utilisé pour le versionning et le travail en équipe. Les IDE Android Studio et Rust Rover ont été les environnements de développement privilégiés, et Postman a été utilisé pour tester l'API.

Développement

Pour le développement du projet "Picsou", une attention particulière a été portée à la mise en œuvre d'outils et de pratiques rigoureuses pour assurer l'efficacité, la sécurité et la collaboration. Les environnements de développement privilégiés ont été Android Studio et Rust Rover. Bien que WebStorm ne soit pas explicitement mentionné dans le document fourni, il est courant dans le développement web et mobile. L'architecture du projet implique un serveur hébergé sur un Raspberry Pi , utilisant potentiellement une distribution légère comme Alpine Linux, bien que le document spécifie "Raspberry OS". Ce Raspberry Pi héberge l'API développée en Rust et la base de données PostgreSQL. Pour la communication et l'accessibilité externe, le forwarding des ports de la box internet a été nécessaire, permettant à l'application mobile de se connecter à l'API hébergée localement. Un aspect crucial du développement a été la mise en place d'un pipeline d'intégration et de déploiement continus. Deux GitHub Actions ont été configurées : une sur la branche "staging" pour compiler le projet à chaque nouvelle version et vérifier sa fonctionnalité, et une autre sur la branche "main" (production) pour déployer automatiquement chaque nouvelle version sur le Raspberry Pi. Ce déploiement automatique est géré par un fichier `docker-compose` (utilisant un `Dockerfile` et un script shell) qui construit et déploie une image fonctionnelle de l'API. Le GitHub Action se connecte via SSH au Raspberry Pi, construit la nouvelle image Docker et la redéploie. Ce processus a significativement amélioré la fluidité du développement en minimisant les efforts liés au déploiement et à la configuration. La sécurité de la base de données et de l'API a été une priorité. L'API, développée avec le framework Rocket en Rust, agit comme un filtre pour les requêtes avant de communiquer avec la base de données. Des règles strictes ont été établies pour sécuriser les données transmises ou insérées dans la base de données, et chaque route de l'API vérifie si l'utilisateur possède les droits nécessaires pour effectuer les actions demandées. Bien que le document ne mentionne pas explicitement l'utilisation d'un pare-feu dédié, la conception de l'API avec des contrôles d'accès et des validations de données contribue à la sécurité globale. La rigueur du travail d'équipe a été favorisée par une gestion soignée de GitHub. Le développement parallèle sur différentes branches, avec une branche de "merge" et une branche de "production", permet une collaboration efficace et un contrôle des versions robuste, garantissant que les mises à jour sont testées avant d'être déployées en production.

Présentation du rendu final

Concernant le rendu final du projet "Picsou", l'équipe a réussi à implémenter la grande majorité des fonctionnalités considérées comme de "haute priorité". Parmi celles-ci, l'application mobile permet désormais aux utilisateurs de créer un compte, de se connecter, de modifier leurs informations personnelles, de rechercher et gérer des amis (envoi de requêtes, acceptation, suppression), de créer des groupes et des discussions, ainsi que de consulter les détails de ces groupes et discussions. Une avancée majeure est la capacité à créer une dépense et à y ajouter des contributeurs et des participants, avec la possibilité de visualiser ces dépenses par groupes et discussions. Il est à noter que la phase de développement la plus longue a été la création de tous les composants essentiels de l'application, et cette étape étant terminée, l'implémentation de nouvelles pages et fonctionnalités sera relativement rapide. Côté API, une refonte de la base de données a été nécessaire pour mieux répondre aux objectifs, et des routes conformes à une architecture REST ont été implémentées pour la gestion des amis, des utilisateurs (création, connexion, modification) et des groupes et dépenses. Toutes ces routes incluent des vérifications de droits pour chaque action. Ce travail a culminé avec une présentation orale de l'application devant notre responsable de stage. Cette présentation a permis de démontrer les fonctionnalités implémentées et l'état d'avancement du projet.

Conclusion

En conclusion, le projet "Picsou" a franchi des étapes significatives dans la création d'une application mobile de gestion de dépenses de groupe, répondant aux besoins identifiés chez les utilisateurs de solutions existantes. L'adoption rigoureuse de la méthodologie SCRUM , combinée à l'utilisation d'outils de conception (Figma) et de développement (Android Studio, Rust Rover), a permis une progression efficace et une gestion optimisée des tâches. La mise en place d'une architecture robuste basée sur Flutter pour l'application mobile, Rust pour l'API, et PostgreSQL pour la base de données, le tout déployé via Docker sur un Raspberry Pi , démontre une approche technique solide et adaptable. L'intégration et le déploiement continus via GitHub Actions ont grandement fluidifié le processus de développement et de mise à jour. À ce jour, les fonctionnalités de haute priorité ont été majoritairement implémentées, offrant aux utilisateurs la création de comptes, la gestion d'amis et de groupes, ainsi que la capacité d'ajouter et de visualiser des dépenses. La refonte de la base de données et la conception d'une API REST sécurisée témoignent de l'engagement envers la performance et la protection des données. Le succès de la présentation orale devant notre responsable de stage valide les efforts et les avancées réalisées. Animés par le désir de concrétiser pleinement cette vision, nous souhaitons poursuivre le développement du projet "Picsou" et le mener jusqu'à sa publication sur les stores mobiles, afin de proposer une solution complète et intuitive au grand public, ainsi que pour monter en compétence dans la mise en production d'une application. Cela sera notre première experience significative dans ce domaine.

Montagne Divider

Mes autres projets

Montagne Divider

Remerciement

Merci d'avoir étudié mon portfolio. J'espère que votre expérience s'est déroulée de manière agréable et bénéfique. Pour toute information supplémentaire, n'hésitez pas à me contacter par mail ou via mes réseaux sociaux.

linkedin.png
github.png
gmail.png