Synced across devices
What syncs to your account
When signed in, PATCH /api/my-content/pages/:id/progress stores view state: PDF page number, scroll offset, scale, and timestamp. GET /last-read returns the latest documents per collection for cross-device resume.
Synced across devices
Local-first, merge smart
Shelf hydrates from localStorage and IndexedDB first — reopening a PDF on the same browser stays instant. Account sync revalidates in the background and merges without clobbering newer local sessions when you were offline.
Article 14 — equality before law
Continue reading on dashboard
Dashboard and library home use last-read metadata to offer Continue reading — one click returns to the collection and page you touched most recently.
Sync model
Signed-in reading position, highlights, and planner state sync through the API — open laptop after phone session and resume the same PDF page.
Local IndexedDB caches PDF bytes for fast reopen; sync handles metadata and progress separately.
Synced across devices
Conflict behavior
Last-write-wins for page index on simple reopen — rare conflicts when two devices edit simultaneously resolve to the most recent save.
Highlights merge by position; duplicate marks from two devices may need manual cleanup in edge cases.
Article 14 — equality before law
Offline and PWA
Cached PDFs open offline; progress queues until reconnect. Install Shelf as PWA on phone and desktop for consistent app shells.
Account safety
JWT in localStorage — sign out on shared devices. Progress is per account, not per browser fingerprint.
Synced across devices
Multi-device workflows
Commute on phone: read and highlight. Desk on laptop: split view, Study AI, essay doc. Tablet: sketch maps. Same library, same streak.
Article 14 — equality before law
Troubleshooting
If progress stalls, check network and token expiry — re-login refreshes session. Force refresh reader if a tab slept for days.