Cloudy Pocket : Une application de gestion de budget intuitive et riche en fonctionnalités pour une gestion financière simplifiée.
Ce projet est toujours maintenu et en cours de développement.
Cloudy Pocket est un projet personnel mais j'ai profité de ma formation de concepteur développeur d'applications pour en faire mon projet de fin de formation.
Il a été développé selon une architecture 3-tiers avec un client en React, une API en Laravel liée à une base de données en MySQL.
Présentation de l'Application
Cloudy Pocket est une application de gestion de budget qui permet à l'utilisateur de créer des comptes bancaires sur l'application à l'image de ses comptes réels et d'y entrer toutes les lignes de transactions qu'il effectue. Lorsque ces lignes apparaissent sur ses comptes réels, il peut alors les pointer et ainsi garder le contrôle sur ses finances en anticipant chaque transaction.
Les principales fonctionnalités disponibles pour les utilisateurs :
- Gestion du compte (Accès et modification des informations et du mot de passe)
- personnalisation du thème de l'application
- Gérer des comptes bancaires
- Gérer ses transactions bancaires
- Gérer les transferts entre les comptes
- Gérer les échéanciers
- Partager la gestion d'un compte avec un autre utilisateur (pratique pour les comptes joints par exemple)
- Exporter ses comptes en CSV ou en PDF
- Gérer ses tickets de caisse
Aspect Technique
Pour créer cette application j'ai suivi plusieurs étapes clés :
- Conception
- Développement
- Tests et validations
- Mise en production
Conception
Pendant cette phase j'ai rédigé le cahier des charges, les spécifications fonctionnelles et techniques ainsi qu'un plan de test et une documentation pour l'API.
Afin de facilité le développement de l'application j'ai aussi produit des diagrammes UML, un dictionnaire de données et des modélisations de la base de données selon la méthode Merise (Modèle Conceptuel de Données (MCD), Modèle Logique de Données (MLD) et Modèle Physique de données (MPD)).
J'ai également dû réfléchir à la sécurisation des données, j'ai naturellement haché les mots de passe avec Bcrypt mais cette application a pour but de gérer les données bancaires des utilisateurs. Bcrypt ne permettant pas de décrypter les données cryptées j'ai opté pour la norme AES (Advenced Encryption Standard), une méthode de cryptage symétrique par bloc très largement répandue autour de la planète.
Développement
Pour développer l'application, j'ai commencé par m'occuper des migrations et modèles de l'API.
J'ai ensuite implémenté les contrôleurs qui contiennent de nombreuses méthodes pour les multiples fonctionnalités de l'application.
Après la mise en place des routes j'ai pu commencer le client (partie visible par l'utilisateur) en React.
Tests et validations
Selon le plan de test établi lors de la phase de conception, j'ai implémenté des tests unitaires ainsi que des tests d'intégration sur les fonctionnalités les plus critiques de l'application. Pour cela j'ai utilisé PHPUnit qui est intégré nativement dans Laravel 10.
J'ai également testé chaque route individuellement grâce à Postman.
Mise en production
Cette application est hébergée avec O2switch.
Ayant déjà déployé de nombreux projets en React et en Laravel avec O2switch, cette phase a été relativement rapide.