summaryrefslogtreecommitdiffstats
path: root/devel-phases.md
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-09 04:58:36 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-09 04:58:36 +0200
commit3cad68ad33e3b5a481adaab569f65f6a9d0c8719 (patch)
tree104f91ff6917668bdfccb8fa25d161556dc9949d /devel-phases.md
parentc9422eaf95090cde6411186c0d62b04286a8477c (diff)
downloadmeshbay-3cad68ad33e3b5a481adaab569f65f6a9d0c8719.tar.gz
docs: mark Phase 4 complete — web client live on meshbay.org
Node HTTP API (7/7 tests), hub web app deployed, HLS streaming (ffmpeg), public group listing. 47/47 total tests. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'devel-phases.md')
-rw-r--r--devel-phases.md31
1 files changed, 25 insertions, 6 deletions
diff --git a/devel-phases.md b/devel-phases.md
index 482e478..ce584fc 100644
--- a/devel-phases.md
+++ b/devel-phases.md
@@ -197,7 +197,7 @@ hatchling==1.31.0 # build backend (needed for pip install)
---
-## Phase 4 — Integration & Web Client 🚧 IN PROGRESS
+## Phase 4 — Integration & Web Client ✅ DONE
**Goal:** end-to-end working product in a browser: login via hub, discover groups,
browse files on a node, download and stream public content.
@@ -213,11 +213,30 @@ Browsers cannot make raw TCP connections — the node must speak HTTP.
| # | 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 | 🚧 |
+| 4.1 | Node HTTP file API | `meshbay_node/transport/http_server.py` | ✅ 7/7 tests |
+| 4.2 | Hub web app (HTML/JS) | `meshbay_hub/api/webapp.py` + `static/app.js` | ✅ live on meshbay.org |
+| 4.3 | Group listing endpoint | `meshbay_hub/api/groups.py` GET /v1/groups | ✅ |
+| 4.4 | End-to-end integration test | local node ↔ hub ↔ browser | ✅ smoke test |
+| 4.5 | HLS streaming (public) | node `/hls/{id}/playlist.m3u8` + `.ts` via ffmpeg | ✅ included in 4.1 |
+
+**Total: 47/47 tests. https://meshbay.org live with web client.**
+
+### Phase 4 deployment
+
+- `https://meshbay.org/` — web app (HTML/JS SPA)
+- `https://meshbay.org/app.js` — JS client
+- `https://meshbay.org/v1/groups` — public group listing (no auth)
+- Node HTTP API (port 19001): `/index`, `/file/{id}`, `/hls/{id}/*.m3u8`, `/hls/{id}/*.ts`
+- HLS streaming uses ffmpeg for on-the-fly segmentation
+- Public content: no auth for index, auth required for chunks
+- Private content (GEK decrypt in browser): deferred to Phase 5
+
+### Dependencies added in Phase 4
+
+```
+# Node (runtime)
+ffmpeg (system package) — HLS segmentation via subprocess
+```
### Phase 4 scope