Skip to content

docs: bubbaloop-dash design spec + Phase 1.0 implementation plan#104

Closed
edgarriba wants to merge 2 commits into
mainfrom
feat/bubbaloop-dash-spec
Closed

docs: bubbaloop-dash design spec + Phase 1.0 implementation plan#104
edgarriba wants to merge 2 commits into
mainfrom
feat/bubbaloop-dash-spec

Conversation

@edgarriba

Copy link
Copy Markdown
Member

Summary

Adds two design artifacts for the new sibling project kornia/bubbaloop-dash — a self-hosted FastAPI + React/TS backend that will own video upload, frame indexing (LanceDB), vector search, and serve the migrated Bubbaloop dashboard UI from a single Docker container.

  • docs/superpowers/specs/2026-05-20-bubbaloop-dash-design.md (703 lines) — Full design across 6 sections: identity/scope, migration approach, architecture + 3 data flows, REST API + auth + defaults + LanceDB schema, frontend changes, error handling/testing/phasing. Plus 2 appendices (research synthesis across robotics/CV/video-search SaaS platforms; glossary). Includes 3 forward-compat hooks for future world-model integration.

  • docs/superpowers/plans/2026-05-20-bubbaloop-dash-phase-1.0-skeleton.md (3.6k lines) — 25-task TDD implementation plan for Phase 1.0 (skeleton: backend + auth + Zenoh-WS proxy + frontend lift + Docker + CI). Each task has failing test → implementation → passing test → commit substeps with complete code, no placeholders.

Phase 1.0 status (already shipped)

The plan has been executed end-to-end against kornia/bubbaloop-dash:

  • Tag v0.1.0-alpha published
  • Backend: 34/34 pytest (incl. async + ws + reconnect tests), ruff clean, mypy --strict clean
  • Frontend: 342/342 vitest across 24 files (lifted dashboard tests + new Login/AuthContext/api-client tests)
  • Single 345 MB Docker image (node build → python:3.11-slim runtime)
  • GitHub Actions CI green on main: backend ✅ frontend ✅ docker ✅

Test Plan

This PR adds documentation only — no code paths affected. Reviewers can verify:

  • Spec is internally consistent (section cross-refs, schema/API alignment)
  • Plan tasks cover every spec requirement in the Phase 1.0 row of the phasing table
  • Forward-compat hooks (videos.kind, frames.source_kind/provenance, streams/rgb/ path) are reflected in the LanceDB schema section
  • Out-of-scope items (Map tab, SLAM, multi-tenant, remote-hosting hardening) are listed explicitly and assigned to future specs

🤖 Generated with Claude Code

edgarriba and others added 2 commits May 20, 2026 23:24
…xing, and dashboard hosting

Designs the new bubbaloop-dash sibling repo: FastAPI + LanceDB + open_clip
backend that owns video upload, frame indexing, vector search, and serves
the migrated React dashboard. Deploys as a single Docker container on a
self-hosted VPS; browser talks only to dash; dash proxies Zenoh from the
edge daemon over Tailscale.

Scope of this spec (Spec 1):
- Repo creation + frontend migration (fork-snapshot, bubbaloop dashboard
  stays untouched for now)
- Resumable chunked upload, async indexing job (PyAV → open_clip → LanceDB)
- Text-based semantic frame search via REST
- Single-origin Zenoh-WSS proxy with ref-counted multiplex
- Bearer-token auth
- Forward-compat hooks for future world-model integration (kind column,
  source_kind+provenance, streams/rgb/ storage layout)
- 5-phase implementation (1.0 skeleton → 1.4 release)

Out of scope (separate specs): Map canvas + SLAM (Spec 2), remote-hosting
hardening (Spec 3), retiring bubbaloop's existing dashboard (future).

Design grounded in research across three platform domains: robotics
(Foxglove, Rerun, Formant, Roboto), CV/annotation (FiftyOne, V7 Darwin,
Roboflow, Labelbox), and video search SaaS (Twelve Labs, Marqo, Mixpeek,
Pinecone). Convergence + judgment-call zones documented in Appendix A.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
25 bite-sized tasks covering: repo scaffolding, pyproject + uv, Settings,
structlog, FastAPI app factory, /healthz + /readyz, bearer-token auth,
first-run token generator, Zenoh session with reconnect, WS protocol parser,
ref-counted multiplex registry, /ws/zenoh endpoint, frontend lift (fork-snapshot),
vite dev proxy, lib/zenoh.ts URL update, REST client, AuthContext, Login screen,
static-file serving with SPA fallback, Dockerfile (multi-stage), compose files,
GitHub Actions CI, CLAUDE.md + README, gh repo create + push, manual smoke test.

End state: docker run, browser to URL, paste bearer token, see existing
Bubbaloop dashboard rendering live Zenoh data via the new backend.

Each task: failing test → impl → passing test → commit. Out of scope (Phases 1.1+):
video upload, decode, embed, LanceDB, search, Map tab features.

Self-review caught: STATIC_DIR="" needs a validator to map to None for dev compose.
Fixed inline in Task 19.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@edgarriba edgarriba closed this May 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant