All these versions share the same codebase.
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.
https://github.com/hamsterbase/vscf
Backend: hamsterbase will run the nodejs server backend locally. Based on vscf, I developed the underlying business logic, Such as file IO, SQLite, HTTP Server.
Frontend: Based on vscf, I used React for front-end development.
Referring to vs code, I use different communication channels for my frontend and backend on different platforms. For example, electron uses electron-ipc, the other side uses websocket.
To run nodejs on my phone, I use the nodejs-mobile, This is an open-source project that allows me to use Node.js on mobile devices.
https://github.com/nodejs-mobile
Here's how to stitch the modules together into an application
Self-hosted version = local server + frontend, using WebSocket for communication.
Desktop version = (Electron + local server + frontend ) + Self-hosted version
Mobile version = (nodejs-mobile + self-hosted version + webview) , 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.
https://www.v2ex.com/t/974678
Recap: During the Spring Festival this year, we deployed an internal system that didn’t have a lot of traffic. Since it was close to the Spring Festival and it was difficult to coordinate resources, we deployed it on a single machine. The other party provided an H3C physical machine and we planned to install the Ubuntu system. The operation and maintenance team requested a desktop installation. At some point, I was interrupted by a phone call. When I returned to the machine, I saw that the Ubuntu desktop was already set up and assumed that the other side’s operation and maintenance team finished the installation. So, I directly deployed our system, tested it, and there were no problems. I left and everything was peaceful afterwards, we didn’t encounter any issues.
Until last night when a colleague from our team went to update the deployment. Due to various coincidences, a disk space shortage was reported. So, after various operations, the machine was restarted, and we discovered that we booted into Live CD desktop and the directory was empty. When we ejected the CD, it indicated that it could not find a boot disk. After a sleepless night, they called me right in the early morning. I was like… ??? After recovering some memories, I remembered that we didn’t install Ubuntu on the hard drive at all.
Since it was a single-machine deployment, I couldn’t think of a way to recover the data temporarily…