EN
FR

Cloudy Pocket

Mai 2024 — Aujourd'hui (2 ans 3 mois)
React
Laravel
Git & Github
Figma
MySQL
Trello
SASS/SCSS
JavaScript
S.E.O.
Schema.org
Accessibilité
Optimisation des performances
Lighthouse
Bcrypt
JSX
RWD

App de gestion de budget en production depuis 2+ ans. Chiffrement AES-256, CI/CD sur 4 repos, déploiement via bastion sécurisé.

Couverture du projet
Visiter le projet Partager sur LinkedIn

Introduction

Cloudy Pocket est une application de gestion de budget personnel que j'ai développée intégralement, d'abord comme projet de fin d'études de mon bachelor, puis comme projet personnel maintenu et enrichi en continu. Elle est en production depuis plus de deux ans, utilisée par une dizaine d'utilisateurs, et l'inscription vient d'être ouverte au public.

C'est un projet que j'ai réalisé entièrement à la main, avant l'ère des assistants IA. Il représente mon expérience la plus longue en maintenance d'une application en production avec des données utilisateurs sensibles.

Architecture

L'application repose sur quatre dépôts indépendants : une API Laravel, un front application React, un front admin React et un site vitrine React. Cette séparation, issue d'un refactoring d'un front unique, permet des déploiements et développements indépendants.

Fonctionnalités

  • Création de comptes bancaires à l'image des comptes réels
  • Enregistrement de toutes les opérations bancaires avec pointage croisé application/banque
  • Gestion d'étiquettes et tickets de caisse : photographie et stockage temporaire pour les sessions de comptes
  • Échéancier : intégration automatique de lignes et automatisation de transferts entre comptes
  • Partage de comptes avec d'autres utilisateurs (comptes joints)
  • Front admin dédié : métriques, activité des comptes, création de comptes, surveillance des connexions

Sécurité

Les données bancaires sont chiffrées en AES-256-CBC. J'ai d'abord implémenté le chiffrement manuellement, ce qui m'a permis de comprendre en profondeur les algorithmes de chiffrement symétrique et asymétrique, avant de migrer vers le système natif de Laravel en réalisant que mon implémentation correspondait quasi exactement au système intégré.

Un système de blacklist IP/email protège l'application contre les tentatives de connexion malveillantes, avec des sanctions graduelles en fonction du nombre de tentatives échouées. Ce système a ensuite été répliqué sur d'autres projets professionnels.

CI/CD et déploiement

La CI/CD repose sur GitHub Actions, répliquée sur les quatre dépôts :

  • Pipeline CI : tests, SAST, détection de secrets
  • Pipeline CD : déploiements automatisés
  • Pipeline scheduled quotidien : scan de dépendances

Une contrainte spécifique à l'hébergeur O2Switch m'a conduit à une solution créative : les IP des runners GitHub étant dynamiques et imprévisibles, mais O2Switch exigeant une IP fixe pour les connexions SSH, j'ai mis en place un bastion VPS externe avec une IP fixe comme point de passage obligé pour tous les déploiements. Ce bastion est volontairement distinct de mon infrastructure personnelle pour des raisons de disponibilité et de séparation des flux réseau.

Recommandations
Couverture du projet Homelab — Infrastructure personnelle multi-serveurs

Homelab — Infrastructure personnelle multi-serveurs

Infra multi-serveurs : Mac mini, RPi, NAS, VPS. Reverse proxy, bastions, VPN WireGuard, domotique, IA locale et observabilité.

Couverture du projet Cluvo — SaaS B2B pour clubs sportifs

Cluvo — SaaS B2B pour clubs sportifs

Co-fondateur & Lead Tech d'un SaaS B2B : architecture Laravel/React, CI/CD GitHub Actions, infra VPS dockerisée et pilotage produit.

Couverture du projet Pipeline DevSecOps — Conduite du changement

Pipeline DevSecOps — Conduite du changement

Mise en place de pratiques DevSecOps dans un SaaS B2B : audit, CI/CD, conduite du changement sur 1 an. Résultats : 5+ déploiements/jour.