Codebase

Reference Codebases

Design Requirements

  1. For Station, we should leverage v8, in particular w.r.t how to deploy isolated things. Look at Cloudflare workers setup.
  2. There should be a UI and brand specific to Station, while other modules can plug into that UI with their own UI.
  3. The above points (1-2) must make sense with some of the following future applications of the Station.
    1. Run a Saturn node
    2. Testing latency of retrievals from storage providers
    3. Run some computation on some data
    4. Station as a deployment target for p2p network tools
    5. General network measurement tools
    6. Deploy a program to say 1000 Stations
  4. 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.
  5. If possible, Reach for the same architecture as the IPFS desktop as more people will understand.
  6. 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.)

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.