Carnet · Architecture
Voir ce qui va sortir du compte sans connexion à la banque.
Une application web installable qui parle directement à Supabase. La sécurité vit dans la base. Tout est refusé par défaut. Le second facteur est obligatoire. Le commun et le privé sont séparés. Aucune connexion bancaire.
- React · TypeScript
- PWA
- Supabase
- Postgres + règles par ligne
- Authentification à 2 facteurs
- Edge Function (Deno)
- Netlify
- Web Push
Le schéma
-
01 — Client
Application web installable
Elle tourne sur téléphone ou sur ordinateur. Les calculs d'argent se font dans le navigateur avec des montants en centimes. Le service worker ne garde que l'enveloppe de l'application et aucune donnée financière.
Dialogue avec le backend (04) grâce à un jeton à 2 facteurs.
-
02 — Code
GitHub
Un dépôt privé. Chaque envoi lance les tests et les vérifications de sécurité.
Prépare la mise en ligne sur Netlify (03). Les changements de base sont appliqués à la main sur Supabase (04).
-
03 — Hébergement
Netlify
Il publie l'application seulement sur demande pour ménager le plan gratuit. Les en-têtes de sécurité limitent les connexions au seul projet Supabase. Aucun script tiers.
Sert les pages à l'application (01).
-
04 — Backend · Supabase
Comptes, base et rappels
Auth gère les comptes sur invitation avec un second facteur obligatoire. La base Postgres refuse tout par défaut. Le commun est lu par le foyer et modifié par l'administrateur. Le privé reste à son auteur. Un planificateur déclenche chaque jour les rappels.
La fonction d'envoi choisit qui prévenir selon les droits de chacun.
Envoie les alertes aux services push (05) et alimente la sauvegarde (06).
-
05 — Notifications
Services push
Les notifications arrivent sur Android grâce au Web Push signé avec des clés VAPID.
Remet la notification au téléphone (01).
-
06 — Sauvegarde
Copie hors ligne
Une copie de la base est exportée chaque semaine à la main. Elle est chiffrée puis rangée hors de Supabase. Sa restauration est à essayer chaque trimestre.
Reçoit l'export de la base (04).
Version actuelle de Carnet en production.
01
La sécurité vit dans la base
Chaque table refuse tout par défaut. Des règles par ligne décident qui lit quoi. Un membre ne peut ni lire ni modifier le privé d'un autre. Ces règles sont testées automatiquement à chaque envoi.
02
Des calculs d'argent exacts
Les montants sont des entiers en centimes. Les dates n'ont pas de fuseau horaire. La logique de calcul est écrite une seule fois et testée à part. La fonction d'envoi en reçoit une copie que la CI vérifie.
03
Aucun secret côté navigateur
L'application ne connaît que l'adresse de Supabase et une clé publique. La clé privée des notifications et la clé de service restent côté serveur. Il n'y a ni script tiers ni outil de mesure.
04
Une mise en ligne maîtrisée
Chaque envoi sur GitHub lance les tests. La publication se déclenche à la demande. Les changements de base sont appliqués à la main après validation. Une sauvegarde chiffrée est prévue chaque semaine.