Explorer
KNOW-PAT-248

Stockage local-first des projets, médias et temporaires

Domaine
data
Type
pattern
Priorité
P1

Stockage local-first des projets, médias et temporaires

Modèle

  • IndexedDB : métadonnées structurées, index, commandes/journal et petits blobs quand cela reste raisonnable.
  • OPFS : médias volumineux, caches, proxies, rendus intermédiaires et écritures en place. Son contenu est privé à l'origine et n'est pas directement visible comme un fichier utilisateur.
  • File System Access ou téléchargement : import et export explicitement choisis par l'utilisateur ; ne pas confondre un handle accordé avec une sauvegarde durable universelle.
  • Cloud : copie distante, historique, partage et synchronisation ; jamais le seul endroit où vit un brouillon non envoyé si le produit se dit local-first.

Résilience

  1. Écrire un journal de commandes ou des snapshots versionnés avec commit atomique.
  2. Garder les médias immuables par identifiant de contenu lorsque possible ; le projet référence ces identifiants.
  3. Au démarrage, détecter une session incomplète et proposer une récupération explicite.
  4. Mesurer le quota, demander la persistance quand le parcours le justifie et gérer proprement un refus ou un stockage évincé.
  5. Fournir un export de projet portable avec version de format et manifeste.

Anti-patterns

  • Médias en base64 dans localStorage.
  • Un énorme objet projet réécrit à chaque frappe.
  • Considérer le cache du Service Worker comme une base de données de documents.
  • Promettre « aucune perte » sans tester fermeture brutale, quota plein, mise à jour et migration.

Tests

Crash pendant écriture, quota épuisé, suppression des données du site, navigation privée, migration N-1/N-2, fichier absent, projet partiellement synchronisé et reprise après mise hors ligne.

Sources