Une application libre de partage de frais

Une application privée et local-first pour les dépenses partagées, développée publiquement et ouverte aux idées comme aux contributions.

Ouvrir Partage

Pensée pour de vrais groupes

Partage aide les amis, les familles et les colocataires à noter qui a payé quoi et à régler les comptes, sans imposer la création d’un énième compte à tout le monde. L’application hébergée est gratuite, sans publicité ni suivi individuel, et fonctionne hors ligne. La courte présentation du produit montre à quoi elle ressemble en pratique.

Le premier prototype était écrit en JavaScript. À mesure que les règles de répartition, l’historique et les modifications hors ligne ont grandi, j’ai préféré repartir de zéro en Elm. Pour une application qui tient les comptes d’un groupe, je voulais un domaine sans surprise : explicite, déterministe et facile à tester.

Comment l’ensemble fonctionne

Le frontend est écrit en Elm 0.19.1 et toute l’interface utilise elm-ui 2.0. Le navigateur n’est pas une simple façade : chaque appareil conserve l’historique chiffré du groupe dans IndexedDB, travaille depuis cette copie locale et se synchronise lorsqu’une connexion est disponible.

Cette séparation garde les règles métier pures et testables, tandis que les frontières remplaçables s’occupent du navigateur, du stockage et du transport. La vue d’ensemble du README offre un plan global du dépot avant d’aller plus loin.

À utiliser selon vos besoins

L’application et le relais se trouvent dans un dépôt GitHub public. La PWA Elm, y compris le registre local et le chiffrement dans le navigateur, est placée sous MPL-2.0. Le relais Node, Hono et SQLite possède sa propre licence Apache-2.0.

Le déploiement auto-hébergé standard réunit la PWA statique et le relais dans un même conteneur, avec SQLite sur un volume persistant. Les notifications push et le formulaire de retour sont facultatifs. Le guide de déploiement couvre la compilation, la configuration, les sauvegardes, le proxy inverse, les quotas, la rétention et le tableau de bord opérateur.

Plusieurs portes d’entrée

Il n’est pas nécessaire de comprendre tout le protocole de synchronisation avant de contribuer. Une aide utile peut commencer à bien des endroits :

Je maintiens actuellement Partage : une question précise ou une petite contribution ciblée est donc réellement utile, sans devoir arriver sous la forme d’une refonte complète. Le README permet de lancer l’environnement local, l’intégration continue vérifie le formatage, elm-review et les suites de tests, et les bugs, questions et pull requests sont les bienvenus dans le gestionnaire de tickets.

Ouvert, sans cacher ses limites

Publier le code ne suffit pas à rendre vraie une promesse de confidentialité, mais ça permet d’examiner concrètement où se trouve la frontière. La page sur le chiffrement détaille ce que le relais peut encore observer et les limites d’une application web. La page sur l’absence de compte explique l’identité des appareils et la récupération.

La spécification de référence consigne le comportement attendu et les frontières de sécurité. La conception cryptographique n’a pas fait l’objet d’un audit indépendant, et un opérateur qui servirait un code web modifié pourrait lire les données saisies dans cette version de l’application. Si la modélisation des menaces vous intéresse, les critiques attentives sont particulièrement bienvenues ici.