Codebase
Reference Codebases
Design Requirements
- For Station, we should leverage v8, in particular w.r.t how to deploy isolated things. Look at Cloudflare workers setup.
- There should be a UI and brand specific to Station, while other modules can plug into that UI with their own UI.
- The above points (1-2) must make sense with some of the following future applications of the Station.
- Run a Saturn node
- Testing latency of retrievals from storage providers
- Run some computation on some data
- Station as a deployment target for p2p network tools
- General network measurement tools
- Deploy a program to say 1000 Stations
- We need to figure out the minimal thing that Saturn needs from Station so we can launch Station with just the one application, to begin with: running a Saturn node.
- If possible, Reach for the same architecture as the IPFS desktop as more people will understand.
- Reach for previous UI design systems to move quickly.
Design
We want a pluggable architecture per points 1, 2, 3d and 4f. The user installs the Station shell first, then loads extensions/plugins like the Saturn node + UI.
Let’s call those pluggable pieces station modules. (ISS consists of modules too.)
- There will be a single station module built into the app for the initial launch - a Saturn node.
- Later, we need to design discovery & distribution channels for station modules. We can draw inspiration from mobile app stores, the catalogue of VS Code extensions, and so on.
The station architecture must be designed with a clean interface between the station and the modules. ipfs-desktop communicating over HTTP with the IPFS node is an example of good architecture. A Go or Rust binary interface between shared libraries (.dll/.so) is an example of a solution that would be difficult to work with.