| … | … | @@ -0,0 +1,80 @@ |
| 1 | # hyper-social |
| 2 | |
| 3 | A P2P social layer over Hypercore Protocol and Keet — a family of interoperable **standalone** |
| 4 | projects (bridges, panels, daemons, interfaces) that together form a decentralized |
| 5 | communication graph. |
| 6 | |
| 7 | ### [Documentation index → `docs/README.md`](docs/README.md) |
| 8 | |
| 9 | Every design decision lives under [`docs/`](docs/) — 22 files, and they are the authority. |
| 10 | Read [`docs/SOCIAL-MODEL.md`](docs/SOCIAL-MODEL.md) before designing anything social here: |
| 11 | rooms are scope, audience and governance, and visibility is a place rather than a field. |
| 12 | |
| 13 | ## The principle |
| 14 | |
| 15 | The communication graph **will fracture.** Any "universal bridge" eventually breaks into many |
| 16 | bridges. That is designed for from day one: each piece is independently useful on its own, and |
| 17 | the system is the emergent property of running them together. See |
| 18 | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md). |
| 19 | |
| 20 | ## The projects |
| 21 | |
| 22 | Fourteen directories, each a standalone npm package with `main: index.js` and an `npm test` |
| 23 | (except `keet-social`, which is a GDScript addon). Line counts are measured, not estimated. |
| 24 | |
| 25 | **Bridges** — connect an outside platform to a Keet P2P room: |
| 26 | |
| 27 | | | LOC | | |
| 28 | |---|---:|---| |
| 29 | | `bridge-envelope` | 396 | the shared message envelope every bridge speaks | |
| 30 | | `bridge-vault` | 372 | credential storage for the bridges | |
| 31 | | `bridge-irc` | 973 | IRC | |
| 32 | | `bridge-discord` | 864 | Discord | |
| 33 | | `bridge-matrix` | 1200 | Matrix | |
| 34 | | `bridge-mastodon` | 1032 | Mastodon | |
| 35 | | `bridge-email` | 1132 | email | |
| 36 | |
| 37 | **Panels and daemons** — add a capability to a room: |
| 38 | |
| 39 | | | LOC | | |
| 40 | |---|---:|---| |
| 41 | | `hyper-wiki` | 688 | wiki panel | |
| 42 | | `hyper-board` | 616 | kanban panel | |
| 43 | | `hyper-feed` | 902 | feed panel | |
| 44 | | `hyper-daemon` | 1735 | automation | |
| 45 | |
| 46 | **Interfaces:** |
| 47 | |
| 48 | | | LOC | | |
| 49 | |---|---:|---| |
| 50 | | `hyper-social` | 2008 | the meta-app tying the pieces together | |
| 51 | | `hyper-social-web` | 3066 | browser interface (the only package with an `npm start`) | |
| 52 | | `keet-social` | — | Godot 4 GDScript addon, talks to keet-daemon over HTTP JSON-RPC | |
| 53 | |
| 54 | ⚠ [`docs/PROJECTS.md`](docs/PROJECTS.md) documents **12** of these — `hyper-social-web` and |
| 55 | `keet-social` have no section there — and [`docs/README.md`](docs/README.md) says 15. Fourteen |
| 56 | is what is on disk. Its per-project LOC estimates have also drifted (`hyper-social` is listed |
| 57 | at ~1500 and measures 2008). |
| 58 | |
| 59 | ## Run one |
| 60 | |
| 61 | ```sh |
| 62 | cd bridge-irc |
| 63 | npm install |
| 64 | npm test |
| 65 | node index.js # each package is main: index.js |
| 66 | ``` |
| 67 | |
| 68 | `hyper-social-web` additionally has `npm start`. There is no root `package.json` and no |
| 69 | workspace tooling — the packages are deliberately independent, which is the fracture principle |
| 70 | applied to the build as much as to the graph. |
| 71 | |
| 72 | ## Related |
| 73 | |
| 74 | Outside this tree: [`favela-web`](../hyper-fleeky/favela-web) and |
| 75 | [`hyper-proto-peer`](../hyper-fleeky/hyper-proto-peer) are the atproto-side surfaces; |
| 76 | [`docs/FAVELA-PEER.md`](docs/FAVELA-PEER.md) scopes how they relate. |
| 77 | |
| 78 | ## License |
| 79 | |
| 80 | Not yet declared. |