I have a read-it-later tool (<a href="https://hamsterbase.com/" rel="nofollow">https://hamsterbase.com/</a>) that I've been maintaining as a hobby for 2 years, supporting Mac, Linux, Windows, iOS, Android, and self-hosted Docker.<p>All these versions share the same codebase.<p>VSCF: I extracted part of the source code from VS Code and developed a framework called VSCF. It includes commands, themes, dependency injection, key bindings, IPC.<p><a href="https://github.com/hamsterbase/vscf">https://github.com/hamsterbase/vscf</a><p>Local server: On top of VSCF, I developed the underlying business logic, and file IO, SQLite, and the logic related to synchronization will be placed here.<p>Frontend: On top of VSCF, I used TypeScript and React for front-end development.<p>nodejs-mobile: This is an open-source project that allows me to use Node.js on mobile devices.<p><a href="https://github.com/nodejs-mobile">https://github.com/nodejs-mobile</a><p>Self-hosted version = local server + frontend, using WebSocket for communication.<p>Desktop version = Electron + local server + frontend, using Electron's IPC for communication.<p>Mobile version = nodejs-mobile + self-hosted version. Users use webview to access the UI. It looks just like a native application. They can even use their phones as servers to access data on their phones from a computer.