Synchronizacja (Duo)
W trybie chmurowym plan należy do gospodarstwa domowego, a użytkownicy są z nim powiązani. Druga osoba dołącza kodem zaproszenia.
Model współdzielenia
- Jedno gospodarstwo = wspólny stan (
jsonb). - Członkowie powiązani przez tabelę członkostwa.
- Dostęp egzekwowany przez Row Level Security — tylko członek widzi i zmienia stan swojego gospodarstwa.
- Stan jest szyfrowany end-to-end; klucz szyfrujący gospodarstwa jest udostępniany zaproszonemu partnerowi przez wymianę kluczy, więc ani my, ani osoby trzecie nie odczytają danych.
Zapis ze scalaniem
Stan zapisywany jest w całości, z optymistyczną kontrolą współbieżności:
- Aplikacja zapamiętuje znacznik
updated_atostatnio pobranego stanu. - Przy zapisie wysyła ten znacznik. Jeśli ktoś zapisał w międzyczasie, znaczniki się rozjadą → wykryty konflikt.
- Wtedy aplikacja pobiera świeży stan i scala: mapy kluczowane miesiącem
(wpisy, snapshoty) są łączone, a pozostałe pola bierze nowsza strona wg
updated_at. Dzięki temu „dwie osoby uzupełniają różne miesiące" nie gubi danych.
Pobieranie i odświeżanie
Stan pobierany jest po wejściu do gospodarstwa oraz przy powrocie do karty/okna, co utrzymuje obie osoby w synchronizacji.
Opuszczenie i usunięcie
- Opuść gospodarstwo — cofa dostęp temu kontu; gdy wychodzi ostatni członek, gospodarstwo (wraz ze stanem) jest usuwane, by nie zostawiać osieroconych danych.
- Usuń konto — kasuje gospodarstwa, w których jesteś jedynym członkiem (RODO).