Aller au contenu
← Retour aux projets

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.

importéimportéaccès directaccès directPaquets partagésLogique métier · client d'APIApplication de bureauTauri 2 · WindowsPWA installableFichiers statiques · CaddySupabase auto-hébergéPostgres · droits par ligne
Aucun serveur d'API au milieu : les deux interfaces parlent directement à la base, qui applique elle-même les droits d'accès.

Les décisions qui comptent

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Aperçu

Capture à venir
Capture à venir