- Node.js 24 or newer
- pnpm 11.3 or newer
- Go 1.26.3
just
just setup
just setup-browserjust setup installs JS dependencies and downloads Go modules. just setup-browser installs Playwright Chromium for local extension runs and e2e tests.
Run the full local loop:
just devThis builds the Go server into a temporary binary, starts it in debug mode on http://127.0.0.1:5001, watches the extension build, opens Chromium with apps/extension/dist, opens the popup, and opens a local HTML video fixture.
Run only the server and extension watcher:
just watchOpen Chromium against an existing build:
just browserRun only the backend:
just serverThe extension reads VITE_VIDEOTOGETHER_LITE_HOST at build time.
VITE_VIDEOTOGETHER_LITE_HOST=https://beta.example.com pnpm build:extensionIf the value is not set, development builds use http://127.0.0.1:5001.
just checkThis runs linting, stale wording checks, typechecks, JS tests, extension build, and Go tests.
Individual commands:
pnpm lint
pnpm typecheck
pnpm test
pnpm build
go test ./apps/server/...Run extension e2e tests:
just test-e2eRun the backend smoke flow against a local or deployed backend:
BACKEND_PUBLIC_URL=https://beta.example.com just smoke-backendThe smoke flow checks /healthz, timestamp, create, join, update, leave, and a WebSocket room.updated broadcast.
Run the backend Docker image behind a temporary Caddy reverse proxy:
just smoke-dockerThis requires a running Docker daemon and may pull the Go, distroless, and Caddy images.
Use GitHub Actions for release artifacts:
Backend Imagepublishes the Go server image to GHCR.Deploy Backendupdates a VPS environment through Docker Compose and Caddy.Extension Packagebuilds a channel-specific ZIP artifact.Chrome Web Store Uploaduploads a version-bumped ZIP to an existing store item.
Beta and production builds must set BACKEND_PUBLIC_URL in their matching GitHub Actions environments.
After release workflows run on a pushed commit, audit the GitHub-side evidence:
RELEASE_CHANNEL=beta just audit-actionsThe audit checks the current commit for successful CI, Docker/Caddy deployment smoke, and a channel-specific extension package artifact.