summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--devel-phases.md42
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
---