I just developed a local-first read later software using CRDT technology. aka
1. all data is stored locally, one page corresponds to one CRDT file. CRDT file is a single source of information
2. use sqlite as cache for query and full text search.
3. use the version of CRDT as the file name. It is guaranteed that there will be no duplicate file names and never file content changes. Only files are deleted and added.
In this architecture
Users could synchronize their data with any intermediate media. Such as hard disk, iCloud, http interface, webdav. It is guaranteed that there will always be no conflicts.