← Écosystème

JoeLedger

L'analyse des dépenses personnelles sur treize ans de données réelles : pas une énième application de suivi, mais un outil pour comparer les catégories d'une année sur l'autre.

Le problème

Depuis 2013, je note mes dépenses dans une application Android : plus de quatorze mille opérations. Mais l'application n'affiche que le solde et le mois en cours : elle ne permet pas de voir comment une catégorie a évolué au fil des ans, ni de comparer l'année en cours avec la même période des années précédentes.

La sauvegarde de l'application est chiffrée dans un format fermé, et la seule issue était un export CSV. C'est de là qu'est né un outil qui importe, normalise et compare.

Comment ça marche

Structure

Comptes, catégories, sous-catégories et opérations dans des tables propres à l'intérieur de JoeCMS. Trois vues : une synthèse, la liste des opérations et la page de comparaison, qui est le cœur du projet.

Parcours d'usage

On exporte le CSV depuis l'application et on le charge. L'importateur synchronise : il met à jour les lignes modifiées, ajoute les nouvelles et supprime celles qui ont disparu sur la période du fichier. On choisit ensuite une catégorie ou une sous-catégorie et on la compare d'une année sur l'autre, par semaine, mois ou année.

Choix techniques

Des imports répétables sans doublons grâce à une empreinte par opération, le tout dans une transaction annulable. Les règles sur les données sont écrites : personnes et lieux restent des catégories, quand catégorie et sous-catégorie sont inversées la principale l'emporte, les montants positifs sur le compte de dépenses comptent comme des recettes.

Limites connues

Il est en phase de conception : l'importateur et les pages existent, la nouvelle apparence est validée mais pas encore reportée dans les gabarits, et l'import du fichier complet doit être vérifié avant la mise en ligne.

Chiffres

Opérations depuis 2013 14 373
Années de données 13
Catégories principales 82
Sous-catégories 1 278
Comptes 4

Stack

  • PHP 8
  • MySQL
  • JoeCMS
  • Chart.js
Captures à venir