Sync mobile ↔ web #40

Closed
opened 2026-04-06 14:34:04 +00:00 by maximus · 0 comments
Owner

Contexte

Ajouter le login optionnel et la synchronisation bidirectionnelle dans l'app mobile.

Ref: spec-simpl-liste-web.md

Taches

  • Intégrer @logto/rn avec adaptateur expo-secure-store (ne pas utiliser AsyncStorage pour les tokens)
  • Bouton login dans Settings > Compte
  • Access token court (15 min) + refresh token avec rotation automatique
  • Intercepteur HTTP pour refresh transparent (capturer 401, rafraîchir, relancer)
  • Table sync_outbox dans SQLite (migration Drizzle) — outbox pattern
  • Client sync : push outbox entries + pull changes avec idempotency keys
  • Réconciliation Inbox au premier merge (remap ID hardcodé → ID serveur)
  • Polling périodique (2 min) + sync au lancement + sync au retour foreground
  • Gestion des conflits LWW
  • Écran de première connexion : choix merge local ou reset serveur
  • Indicateur visuel de statut sync (header)
  • Mode dégradé si serveur inaccessible (outbox s'accumule, sync au retour)

Dépendances

Depends on #34, #37

## Contexte Ajouter le login optionnel et la synchronisation bidirectionnelle dans l'app mobile. Ref: `spec-simpl-liste-web.md` ## Taches - [ ] Intégrer `@logto/rn` avec adaptateur `expo-secure-store` (ne pas utiliser AsyncStorage pour les tokens) - [ ] Bouton login dans Settings > Compte - [ ] Access token court (15 min) + refresh token avec rotation automatique - [ ] Intercepteur HTTP pour refresh transparent (capturer 401, rafraîchir, relancer) - [ ] Table `sync_outbox` dans SQLite (migration Drizzle) — outbox pattern - [ ] Client sync : push outbox entries + pull changes avec idempotency keys - [ ] Réconciliation Inbox au premier merge (remap ID hardcodé → ID serveur) - [ ] Polling périodique (2 min) + sync au lancement + sync au retour foreground - [ ] Gestion des conflits LWW - [ ] Écran de première connexion : choix merge local ou reset serveur - [ ] Indicateur visuel de statut sync (header) - [ ] Mode dégradé si serveur inaccessible (outbox s'accumule, sync au retour) ## Dépendances Depends on #34, #37
maximus added this to the spec-simpl-liste-web milestone 2026-04-06 14:34:04 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-04-06 14:34:04 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-04-06 16:55:49 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/simpl-liste#40
No description provided.