Task Manager
Une base de code, deux applications : bureau et PWA.
- Année
- 2026
- Statut
- En production
- Stack
- TypeScriptTauri 2PWASupabasePostgreSQLpnpm workspacesCaddy
Le problème
Je voulais mes tâches sur mon PC et sur mon téléphone, synchronisées, sans confier leur contenu à un service tiers. Et sans réécrire deux fois la même logique métier.
L'architecture
Un monorepo où la logique métier et le client d'API vivent dans des paquets partagés. Les applications ne sont que des interfaces posées dessus : elles se distinguent par leur navigation et leur ergonomie, pas par leurs règles.
Les décisions qui comptent
- 01
Abandonner l'application Android pour une PWA
L'app Android marchait, mais chaque correctif demandait de reconstruire un APK et de le réinstaller à la main. Une PWA installable sur l'écran d'accueil couvre Android et iOS, se met à jour toute seule, et supprime toute une chaîne de build. Le code Android existe encore, il ne sert simplement plus.
- 02
Supprimer le serveur d'API
Il y avait au départ un backend maison avec sa propre base. Il ne faisait que relayer des requêtes et gérer des permissions — deux choses que Postgres sait faire seul. Le remplacer par Supabase en accès direct, avec les règles de sécurité écrites dans la base, a retiré un service entier à maintenir et à surveiller.
- 03
Les permissions dans la base, pas dans le code
Chaque ligne porte ses propres règles d'accès au niveau de Postgres. Un client mal écrit, ou modifié par son utilisateur, ne peut pas lire les tâches de quelqu'un d'autre : la barrière n'est pas dans l'application, elle est en dessous.
- 04
Un déploiement qui tient en une copie de fichiers
La partie web n'est qu'un dossier de fichiers statiques servis par Caddy. Publier une version consiste à copier le dossier — aucun conteneur à redémarrer, aucune interruption pour les utilisateurs.