Aller au contenu

Fonctionnalités

Ce que Financy fait aujourd’hui, et ce qui vient ensuite

Financy est en cours de reconstruction. Ce qui fonctionne aujourd’hui : les comptes dans toutes les devises, et la base en dessous : connexion, accès partagé avec rôles, mises à jour en direct, une appli hors ligne, export, neuf langues et votre propre serveur. Chaque section renvoie à son code.

Par Anton ShubinMis à jour le

Les opérations et les budgets ne sont pas encore là. Voir où en est la reconstruction.

Fonctionne aujourd’hui

Le socle sur lequel reposera l’argent de votre foyer

Ces parties fonctionnent et sont testées en CI. Les comptes dans toutes les devises et leurs catégories sont là ; les opérations viennent ensuite.

Fonctionne aujourd’huiLa connexion avec Google et GitHub demande des clés propres au serveur ; une nouvelle installation commence donc avec la seule connexion par e-mail.

Chaque compte dans sa propre devise

Espèces, comptes bancaires, cartes, épargne, actifs et dettes, chacun dans sa devise, regroupés par type, avec un compte par défaut. Tout le foyer voit chaque modification aussitôt.

Pour les développeurs

  • Le serveur calcule chaque solde à la lecture et ne le stocke jamais, donc il ne peut pas dériver
  • Les montants sont des entiers dans la plus petite unité de la devise : le yen n’en a pas, le dinar en a trois
  • Un lecteur voit les comptes ; seuls les éditeurs et au-dessus les modifient, et le serveur le vérifie
Lire le code source des comptes

Des catégories sur un seul niveau

Rangez dépenses et revenus dans des catégories, chacune avec son icône et sa couleur. Mettez Courses et Restaurant sous Alimentation. Un nouveau foyer commence avec une courte liste dans sa langue.

Pour les développeurs

  • Une catégorie n’est jamais supprimée : l’archiver la retire des listes de choix, et ses opérations passées la gardent
  • Une sous-catégorie a le type de sa parente, et une parente ne peut pas avoir de parente, vérifié sur le serveur
  • Un lecteur voit les catégories ; seuls un éditeur ou plus les modifient
Lire le code source des catégories

La connexion, c’est réglé

Vous créez un compte avec une adresse e-mail et un mot de passe, puis confirmez l’adresse avec un code. Vous pouvez réinitialiser un mot de passe oublié, continuer avec Google ou GitHub, vous connecter avec une clé d’accès ou avec un code reçu par e-mail. Une app d’authentification ajoute la double authentification (2FA), et vous voyez tous les appareils connectés et pouvez déconnecter les autres.

Pour les développeurs

  • Mots de passe hachés avec PBKDF2-SHA-256 via Web Crypto, 600 000 itérations par défaut
  • Cookies de session signés, et une piste d’audit de chaque événement de connexion
  • Jetons d’API personnels, stockés uniquement sous forme de hachages à clé
Lire le code source de la connexion

Un foyer, chacun avec son propre identifiant

Un foyer (un groupe, dans l’app), ce sont les personnes qui partagent leur argent. Invitez votre conjoint ou votre famille, donnez à chacun un rôle de lecteur à propriétaire, et transférez la propriété quand il le faut. Un foyer supprimé peut être restauré pendant 30 jours, et le journal d’activité montre qui a changé quoi.

Pour les développeurs

  • Chaque donnée est vérifiée par rapport à une seule frontière : le foyer
  • Chacun ne voit que les foyers dont il fait partie
  • Invitations, changements de rôle et transfert de propriété, chacun avec ses tests
Lire le domaine des groupes

Les changements apparaissent sur chaque appareil sans recharger

Quand une personne du foyer change quelque chose, les autres le voient aussitôt, sur chaque appareil ouvert. Un portable qui sort de veille rattrape ce qu’il a manqué.

Pour les développeurs

  • Un WebSocket standard, avec un numéro de séquence sur chaque changement
  • Un appareil qui se reconnecte récupère ce qu’il a manqué
Lire la conception du temps réel

Une application qui s’ouvre sans réseau

Installez Financy sur votre téléphone ou votre ordinateur : il s’ouvre hors ligne et affiche ce qu’il a vu en dernier.

Pour les développeurs

  • Une copie locale de chaque liste dans IndexedDB, et une file d’écriture avec des clés d’idempotence
  • « Garder ma version » ou « Prendre l’autre version » pour chaque conflit
Lire docs/offline.md

Vos données partent avec vous

Le propriétaire peut à tout moment exporter un foyer dans un fichier JSON ouvert, puis l’importer plus tard comme nouveau foyer. L’import n’écrase jamais l’original.

Pour les développeurs

  • Tout le fichier est vérifié avant la moindre écriture, puis importé en une seule étape
  • Chaque enregistrement reçoit un nouvel id, donc un import n’entre jamais en conflit avec l’existant
Lire le code de l’export

En neuf langues

L’app et ce site sont disponibles en anglais, russe, espagnol, allemand, portugais brésilien, arabe, français, japonais et chinois simplifié. Chacun choisit sa langue dans l’app, donc un foyer peut en utiliser plusieurs.

Pour les développeurs

  • Un catalogue par langue, vérifié par un test qui nomme chaque message manquant
  • Les nombres et les dates via l’Intl du navigateur
  • Les pages en arabe se lisent de droite à gauche
Lire le guide de traduction

Tourne sur votre propre serveur

Financy tourne sur n’importe quel serveur Linux, loué ou à vous, avec Docker Compose. L’auto-hébergement est gratuit sous licence AGPL‑3.0, et les données de votre foyer restent sur votre serveur.

Pour les développeurs

  • Traefik en frontal, avec des certificats automatiques
  • Postgres et Valkey à côté des applications
  • Métriques, journaux et alertes avec VictoriaMetrics, VictoriaLogs et Grafana
  • Une sauvegarde quotidienne et chiffrée de la base, en option, avec la restauration écrite pas à pas
Lire les fichiers Compose
$ deno task deploy Copying files... Copying infra/envs/.env.prod to infra/envs/.env... Creating web push keys if missing... Starting the app... Deploy completed.
Version abrégée : la sortie de rsync et de Compose entre les étapes est omise.
  • Traefik
  • Postgres
  • Valkey
  • VictoriaMetrics
  • VictoriaLogs
  • Grafana
  • Alertmanager
  • Garage file store
  • restic backups

Questions

Financy sait-il faire ça ?

Puis-je faire tourner Financy sur un hébergement mutualisé ou en serverless ?

Non. Financy tourne en conteneurs permanents avec Docker Compose sur un serveur Linux, car l’API garde des connexions WebSocket ouvertes et un worker vide une file d’attente.

Quelle base de données Financy utilise-t-il ?

Postgres. Ses migrations, ses requêtes et ses tests d’intégration en dépendent.

Y a-t-il une app mobile ?

Pas encore dans un store. Aujourd’hui, l’app web s’installe depuis le navigateur sur téléphone et ordinateur, et s’ouvre hors ligne.