Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

Example Holium Node ecosystem data flow

dolled-possum edited this page Jun 13, 2023 · 9 revisions
  1. Jane, who is a user with one ship (~simpel-marbus), launches their Realm desktop client. They've used it before, so it's already properly configured to connect to ~simpel-marbus's Holium Node's URL; all they need to do is input their PIN.
  2. The Realm desktop client is able to the ~simpel-marbus's Holium Node, and the client issues a my-node-details request.
  3. ~simpel-marbus's Holium Node responds with the following:
{ 
  "node": "simpel-marbus-node",
  "node_token": "ey037428374.ey234298739832987423234.ey18238",
  "address": "https://simpel-marbus-node.third.earth",
  "linked_ship": "~simpel-marbus",
  "current_time": 1686320950,
  "spaces": [
    {
      "name": "simpel-marbus",
      "space_token": "ey037428374.ey234298739832987423234.ey18238",
      "description": "(default space created by Holium Node)",
      "image": "https://simpel-marbus-node.third.earth/assets/images/default_space_avatar.jpg",
      "most_recent_response": 1686320936,
      "host": "simpel-marbus-node",
      "privacy": "private",
      "membership_status": "owner"
    },
    {
      "name": "Abacus Collector",
      "space_token": "ey0374236891.ey23429892389708d832938.ey83y",
      "description": "A public community of abacus enthusiasts sharing their collections and tips",
      "image": "https://nyc1.spaces.digitalocean.com/sampel-ritdev/hittite_abacus_glamor_shot.jpg",
      "most_recent_response": 1686320915,
      "host": "sampel-ritdev-node",
      "privacy": "public",
      "membership_status": "member"
    },
  ]
}
  1. The Realm Client can display a Spaces chooser, or automatically default to one, or the last one accessed, or whatever. It can also decorate each individual entry with a "staleness" indicator depending upon how long it has been since the information was retrieved.
  2. The Realm Client now follows with a my-space-details request for Abacus Collector (probably by some ID not shown in the above response, would be preferable to just a Space name)
  3. The ~simpel-marbus's Holium Node (even though the information is about a Space hosted by ~sampel-ritdev, it's ~simpel-marbus's Holium Node that has retrieved all of the details and it serving it to its Realm clients) responds with the following:
{
  "members": [
    { "id": "~pidful-dolzod", "last_activity": "1686320915", "nickname": "James", "avatar": <snip>},
    { "id": "~piddev-marbus", "last_activity": "1686318008", "nickname": "tinstreamer 3555", "avatar": <snip>},
    { "id": "~gampel-filter", "last_activity": "1686319544", "nickname": "Dylan Vittozzi", "avatar": <snip>},
    ...
  ],
  "services": [
    { "chat": [
        { "id": "Abacus Repair", "style": <some CSS or whatever>, "avatar": <snip>},
        { "id": "Unusual Abacuses", "style": <some CSS or whatever>, "avatar": <snip>}
      ]
    },
    { "videocollab": [
        { "id": "Abacus Arithmetic Speed Competition", "style": <some CSS or whatever>, "avatar": <snip>}
      ]
    },
    { "filesharing": [
        { "id": "Abacus Repair Hell", "style": <some CSS or whatever>, "avatar": <snip>},
        { "id": "Most Beautiful Abacuses", "style": <some CSS or whatever>, "avatar": <snip>}
      ]
    },
  ]
}
  1. The Realm Client can now show all of the interactive options for the Space, and who else has been in the Space.
  2. Jane clicks to see details of the Unusual Abacuses chat. This causes the Realm Client to make a my-space-service-details request for the Abacus Collector space's chat:"Unusual Abacuses" instance.
  3. The Holium Node responds with everything that the Chat renderer needs to connect to the chat. (Sample payload not included, but would definitely include a URL, maybe a list of participants, who knows what else.)
  4. Clicks "join chat" which results in the Chat renderer connecting to that URL passing the Abacus Collector "space_token" in the header to connect. etc.