Kopeck - Application de Gestion de Dépenses en Groupe

Début: 17 Mar 2023

Introduction

Kopeck est une application web développée avec Symfony 7 pour gérer les finances entre amis, en colocation ou en voyage. Elle permet de créer des groupes, d'enregistrer des dépenses et de voir en temps réel qui doit quoi à qui.

Le projet repose sur un backend Symfony classique (contrôleurs, entités Doctrine) couplé à un rendu Twig dynamisé par Symfony UX, et packagé en PWA installable sur mobile comme sur ordinateur.

Fonctionnalités clés

1. Gestion des utilisateurs

  • Inscription sécurisée avec vérification par e-mail.
  • Réinitialisation de mot de passe.
  • Profil utilisateur personnalisable avec photo.

2. Groupes de dépenses ("Splitters")

  • Création de groupes avec nom, description et catégorie (vacances, colocation...).
  • Invitation de membres via un lien de partage unique.
  • Tableau de bord par groupe, avec vue d'ensemble des dépenses et des soldes.

3. Gestion des dépenses

  • Ajout de dépenses avec montant, date et description.
  • Justificatifs : téléversement de photos des tickets de caisse.
  • Répartition des coûts entre membres (qui a payé, qui sont les bénéficiaires).
  • Catégorisation des dépenses (logement, nourriture, transport...).
  • Historique complet des opérations effectuées sur un groupe de dépenses.

4. Équilibrage des comptes

  • Calcul automatique et en temps réel des soldes de chaque membre.
  • Synthèse claire des remboursements à effectuer pour équilibrer le groupe.

5. Expérience utilisateur

  • Interface réactive grâce à Symfony UX (Live Components), avec mises à jour instantanées sans rechargement de page.
  • PWA : application installable sur mobile et ordinateur, utilisable hors ligne.
  • Design responsive basé sur Bootstrap, avec thème clair et sombre.

Architecture

Le backend Symfony porte toute la logique métier (dépenses, groupes, équilibrage des comptes), avec Doctrine ORM pour la persistance MySQL. Le rendu passe par Twig, dynamisé par Symfony UX (Live Components, Turbo) pour des mises à jour sans rechargement de page. Les extensions Doctrine Gedmo (Loggable, Timestampable, SoftDeleteable) gèrent l'audit et la suppression logique directement au niveau des entités, sans code applicatif dédié. L'ensemble est packagé en PWA, installable et utilisable hors ligne.

Stack technique

Frontend

  • Twig, dynamisé par l'écosystème Symfony UX (LiveComponent, TwigComponent, Turbo)
  • AssetMapper et SASS pour la gestion des assets
  • Bootstrap pour le design responsive

Backend

  • PHP 8.3 et Symfony 7
  • MySQL avec Doctrine ORM
  • Extensions Doctrine Gedmo (Loggable, Timestampable, SoftDeleteable)

Infrastructure & DevOps

  • Docker pour un environnement reproductible
  • Makefile pour les commandes courantes (installation, démarrage, tests...)
  • GrumPHP en hook pre-commit : PHPStan, PHP-CS-Fixer, PHPMD, TwigCS
  • PHPUnit pour les tests unitaires et fonctionnels

Défis techniques relevés

  • PWA pour un usage quasi exclusivement mobile : rendre l'application installable et utilisable comme une app mobile native, sans passer par les stores (App Store, Play Store).
  • Historique complet des opérations : tracer chaque action effectuée sur un groupe de dépenses, en s'appuyant sur l'extension Doctrine Gedmo Loggable au niveau des entités.

Conclusion

Kopeck met en pratique un backend Symfony orienté temps réel, via les Live Components, associé à une expérience PWA installable et utilisable hors ligne, sur un cas d'usage concret de gestion collaborative de dépenses.

Technologies Utilisées

Bootstrap Bootstrap CSS CSS Docker Docker Doctrine Doctrine Github Github JavaScript JavaScript MySQL MySQL PHP PHP PhpStorm PhpStorm Sass Sass Symfony Symfony