Notifications push (prévu, pas implémenté)¶
Pas de notification push pour l'instant — décision actée dès le cadrage initial (voir besoin fonctionnel), jugé trop complexe pour un premier lot. Cette page sert de mémo technique pour le jour où on s'y attaque : ce qu'il faut assembler, et pourquoi ce n'est pas juste "activer une option".
Le mécanisme : Web Push¶
Une PWA peut recevoir des notifications même fermée via l'API Web Push — pas d'app store, pas de code natif Android/iOS séparé, le même code marche sur les deux plateformes.
Pièces à assembler¶
- Clés VAPID — une paire de clés publique/privée générée une fois (lib
web-push), qui authentifie nos envois sans dépendre d'un service tiers (Firebase, etc.). Clé privée gardée côté serveur, clé publique embarquée dans le front. - Permission utilisateur — demander l'autorisation (
Notification.requestPermission()), l'utilisateur doit accepter explicitement. - Abonnement (subscription) — une fois autorisé, le navigateur génère un point de terminaison unique
par appareil (
pushManager.subscribe(...)) qu'il faut stocker en base : nouvelle table, ex.push_subscriptions, liée à undevice(voir modèle de données). - Service Worker étendu — on en a déjà un (généré par
vite-plugin-pwapour le mode hors-ligne, voir développement), mais il faut lui ajouter un gestionnaire d'événementpushqui affiche la notification (self.registration.showNotification(...)). - Un serveur qui envoie les push — la pièce qu'on n'a pas encore. Il faut quelque chose qui
détecte "une tâche vient d'être créée / arrive à échéance" et envoie effectivement la notification
(requête HTTP signée VAPID vers le point de terminaison de chaque abonné). Deux options :
- Une Supabase Edge Function, déclenchée par un trigger Postgres sur
alarmes - Ou le backend Node.js mis de côté depuis le cadrage initial (voir architecture) — justement prévu pour ce genre de logique serveur
- Une Supabase Edge Function, déclenchée par un trigger Postgres sur
Différence Android vs Apple/iOS¶
| Android (Chrome) | iOS (Safari) | |
|---|---|---|
| Support | Web Push standard, sans restriction particulière | Supporté seulement depuis iOS 16.4 (mars 2023) |
| Condition | Fonctionne dans un onglet navigateur classique | Doit être installée ("Ajouter à l'écran d'accueil") — aucun push si c'est juste un onglet Safari ouvert |
| Fiabilité | Bonne | Un peu moins mature (icônes, badges parfois limités) |
Pourquoi ce n'est pas trivial¶
Ce n'est pas une option à cocher — ça touche la base (nouvelle table), le front (service worker, demande de permission, gestion de l'abonnement) et surtout fait apparaître le besoin d'un service serveur qu'on n'a volontairement pas construit jusqu'ici (le front parle directement à Supabase). C'est précisément le genre de logique qui justifierait d'enfin écrire le backend Node.js prévu dans la stack.
À trancher le moment venu¶
- Edge Function Supabase vs backend Node.js dédié pour l'envoi
- Quels événements déclenchent une notification (nouvelle tâche assignée ? tâche qui expire bientôt ? tâche urgente uniquement ?) — à cadrer avec l'exploitant
- Comportement de repli sur iOS si l'utilisateur n'a pas installé la PWA