diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-09 04:54:03 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-09 04:54:03 +0200 |
| commit | a4522fe8253fcf6702cf6af7c25284b9519f3969 (patch) | |
| tree | 645501c329989acfd1c0edb11f167a023b9974b9 /devel-phases.md | |
| parent | 7d62ef84c48660d02df0dd925ec420641b97a936 (diff) | |
| download | meshbay-a4522fe8253fcf6702cf6af7c25284b9519f3969.tar.gz | |
docs: add Phase 4 plan — web client + node HTTP API
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'devel-phases.md')
| -rw-r--r-- | devel-phases.md | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/devel-phases.md b/devel-phases.md index 092d3aa..482e478 100644 --- a/devel-phases.md +++ b/devel-phases.md @@ -197,17 +197,41 @@ hatchling==1.31.0 # build backend (needed for pip install) --- -## Phase 4 — Integration & Client +## Phase 4 — Integration & Web Client 🚧 IN PROGRESS -**Goal:** end-to-end working product: node + hub + web client. +**Goal:** end-to-end working product in a browser: login via hub, discover groups, +browse files on a node, download and stream public content. -| # | Component | Notes | -|---|---|---| -| 4.1 | Web client (browser) | Browse Mesh Group Index, download, stream VOD | -| 4.2 | End-to-end integration test | Node ↔ Hub ↔ Client full flow | -| 4.3 | HLS/DASH streaming | Node segments on-the-fly, per-segment GEK-derived key | -| 4.4 | Chat (Double Ratchet) | Group messaging with attachments, Signal-like | -| 4.5 | Multi-group + multi-dir | Node hosts N groups across M directories | +### Architecture decision + +Browsers cannot make raw TCP connections — the node must speak HTTP. +- Node adds an **HTTP file API** (port 19001) serving public content via standard `fetch()` +- Private content (GEK decrypt in browser) deferred to Phase 5 (requires WebCrypto + ChaCha20 WASM) +- Hub serves the web application at `meshbay.org/app/` + +### Milestones + +| # | Component | File(s) | Status | +|---|---|---|---| +| 4.1 | Node HTTP file API | `meshbay_node/transport/http_server.py` | 🚧 | +| 4.2 | Hub web app (HTML/JS) | `meshbay_hub/api/webapp.py` + `static/` | 🚧 | +| 4.3 | Group listing endpoint | `meshbay_hub/api/groups.py` — GET /v1/groups | 🚧 | +| 4.4 | End-to-end integration test | local node ↔ hub ↔ browser | 🚧 | +| 4.5 | HLS streaming (public) | node serves `m3u8` + `.ts` segments | 🚧 | + +### Phase 4 scope + +**In scope (public content only):** +- Node HTTP API: serve public Mesh Group Index (JSON) + file chunks (binary) +- Hub web app: login, group discovery, file browser, download link +- HLS basic streaming: node segments video on-the-fly, browser plays natively +- JWT auth passed as query param or header to node HTTP API + +**Deferred to Phase 5:** +- Private group content in browser (requires ChaCha20-Poly1305 via WASM) +- Chat UI +- Multi-group node +- Android client --- |