Spatial video lounge for informal, hallway-style interactions.
See the codeSpatial video lounge for informal online and hybrid events — move freely in a shared 2D space with proximity-based audio. Built for Eventyay integration and self-hosted Jitsi.
Documentation: docs.loungemesh.com — built with TypeDoc + VitePress, deployed via GitHub Actions to GitHub Pages. See Publishing docs.
/api/meetings/state/:roomName/init endpoint bundling room state, role verification, notes, polls, whiteboard, and background.X-Forwarded-For).| Layer | Technologies |
|---|---|
| Frontend SPA | Vue 3, TypeScript, Vite, Pinia, Web Audio API, Web Workers |
| Media Engine | lib-jitsi-meet (headless WebRTC, no iframe API) |
| Backend API | Node.js, Express, TypeScript, Prisma ORM, PostgreSQL, Redis |
| Media Server | Jitsi Videobridge (JVB), Prosody XMPP, Jicofo |
| Infrastructure | Docker Compose, Nginx (reverse proxy, Brotli/gzip compression, CSP headers) |
Spins up the full stack: LoungeMesh SPA, Backend API, PostgreSQL, Redis, and Jitsi media containers.
# 1. Install dependencies and initialize environment
npm run setup
# 2. Start all Docker containers
npm run docker:up
Note: Use
127.0.0.1for local smoke testing; some systems resolvelocalhostto IPv6 first which may reset mapped container ports.
Run the frontend SPA and backend API server locally with hot-reloading:
# Install root and backend dependencies
npm install
npm --prefix server install
# Initialize .env file (auto-detects local LAN IP)
npm run setup
# Run backend migrations
npm --prefix server run prisma:migrate -- --name init
# Start development servers
npm run dev # Frontend Vite dev server (port 5173)
npm --prefix server run dev # Backend Express API server (port 5000)
| Command | Description |
|---|---|
npm run dev | Run Vite development server for the Vue SPA |
npm run build | Build production SPA bundle to dist/ |
npm test | Run Vitest unit tests with 100% code coverage enforcement |
npm run typecheck | Run vue-tsc type-check across .ts and .vue files |
npm run docs:dev | Run local VitePress documentation server |
npm run docs:build | Build TypeDoc API reference and VitePress documentation |
npm run docs:preview | Preview built documentation site locally |
npm run test:e2e | Run Playwright end-to-end integration tests |
npm run setup | Generate .env from template and detect LAN IP (loungemesh.sh dev) |
npm run docker:up | Launch full stack in Docker Compose |
npm run deploy | Rebuild and deploy Docker stack on server (loungemesh.sh deploy) |
npm run fix:jvb | Re-advertise public IP on a running JVB instance |
Production server provisioning uses ./scripts/loungemesh.sh bootstrap — see Deployment Guide.
[!IMPORTANT] Mandatory Quality Gates Before Committing or Submitting a Pull Request:
- All READMEs & AI Skills Must Be Updated: Whenever introducing or modifying user flows, features, or architectural components, all README files (
README.md,server/README.md) and all AI skills in.agents/skills/MUST be updated to reflect the newer user flows, API contracts, and testing instructions.- Vitest 100% Code Coverage: Run
npm test— all test files must pass with strict 100% statement, branch, function, and line coverage.- E2E Integration Testing: Run
npm run build && npm run test:e2e— all Playwright end-to-end integration tests must pass cleanly.- Typechecks & Server Builds:
npm run typecheckandnpm --prefix server run buildmust compile with zero errors.
npm test
Must pass across all test files with 100% statement, branch, function, and line coverage enforced by @vitest/coverage-v8.npm run build && npm run test:e2e
Playwright smoke and integration tests must pass cleanly.npm run typecheck
npm --prefix server run build
Zero TypeScript compiler errors in both frontend (vue-tsc) and backend (tsc).npm run docs:build
VitePress documentation and TypeDoc API references must compile with zero broken links or markdown errors.Whenever introducing or modifying user flows, features, or architectural components:
README.md, server/README.md, and relevant guides in docs-site/ (e.g., features.md, scaling.md, architecture.md) with the newer user flows, API payloads, or config flags..agents/skills/ (e.g., loungemesh-features-and-testing, loungemesh-architecture, loungemesh-eventyay-integration, etc.) so all AI models (Antigravity, Gemini, Claude, Cursor, Copilot) remain aligned on the newest user flows, contracts, and security patterns.AGENTS.md, GEMINI.md, CLAUDE.md, .cursorrules, and .github/copilot-instructions.md reflect any updated development directives.See LICENSE.md.
298 followers · starred Dec 2017
136 followers · starred Feb 2018
107 followers · starred Sep 2018
108 followers · starred Feb 2018
Spatial video lounge for informal, hallway-style interactions.
See the codeSpatial video lounge for informal online and hybrid events — move freely in a shared 2D space with proximity-based audio. Built for Eventyay integration and self-hosted Jitsi.
Documentation: docs.loungemesh.com — built with TypeDoc + VitePress, deployed via GitHub Actions to GitHub Pages. See Publishing docs.
/api/meetings/state/:roomName/init endpoint bundling room state, role verification, notes, polls, whiteboard, and background.X-Forwarded-For).| Layer | Technologies |
|---|---|
| Frontend SPA | Vue 3, TypeScript, Vite, Pinia, Web Audio API, Web Workers |
| Media Engine | lib-jitsi-meet (headless WebRTC, no iframe API) |
| Backend API | Node.js, Express, TypeScript, Prisma ORM, PostgreSQL, Redis |
| Media Server | Jitsi Videobridge (JVB), Prosody XMPP, Jicofo |
| Infrastructure | Docker Compose, Nginx (reverse proxy, Brotli/gzip compression, CSP headers) |
Spins up the full stack: LoungeMesh SPA, Backend API, PostgreSQL, Redis, and Jitsi media containers.
# 1. Install dependencies and initialize environment
npm run setup
# 2. Start all Docker containers
npm run docker:up
Note: Use
127.0.0.1for local smoke testing; some systems resolvelocalhostto IPv6 first which may reset mapped container ports.
Run the frontend SPA and backend API server locally with hot-reloading:
# Install root and backend dependencies
npm install
npm --prefix server install
# Initialize .env file (auto-detects local LAN IP)
npm run setup
# Run backend migrations
npm --prefix server run prisma:migrate -- --name init
# Start development servers
npm run dev # Frontend Vite dev server (port 5173)
npm --prefix server run dev # Backend Express API server (port 5000)
| Command | Description |
|---|---|
npm run dev | Run Vite development server for the Vue SPA |
npm run build | Build production SPA bundle to dist/ |
npm test | Run Vitest unit tests with 100% code coverage enforcement |
npm run typecheck | Run vue-tsc type-check across .ts and .vue files |
npm run docs:dev | Run local VitePress documentation server |
npm run docs:build | Build TypeDoc API reference and VitePress documentation |
npm run docs:preview | Preview built documentation site locally |
npm run test:e2e | Run Playwright end-to-end integration tests |
npm run setup | Generate .env from template and detect LAN IP (loungemesh.sh dev) |
npm run docker:up | Launch full stack in Docker Compose |
npm run deploy | Rebuild and deploy Docker stack on server (loungemesh.sh deploy) |
npm run fix:jvb | Re-advertise public IP on a running JVB instance |
Production server provisioning uses ./scripts/loungemesh.sh bootstrap — see Deployment Guide.
[!IMPORTANT] Mandatory Quality Gates Before Committing or Submitting a Pull Request:
- All READMEs & AI Skills Must Be Updated: Whenever introducing or modifying user flows, features, or architectural components, all README files (
README.md,server/README.md) and all AI skills in.agents/skills/MUST be updated to reflect the newer user flows, API contracts, and testing instructions.- Vitest 100% Code Coverage: Run
npm test— all test files must pass with strict 100% statement, branch, function, and line coverage.- E2E Integration Testing: Run
npm run build && npm run test:e2e— all Playwright end-to-end integration tests must pass cleanly.- Typechecks & Server Builds:
npm run typecheckandnpm --prefix server run buildmust compile with zero errors.
npm test
Must pass across all test files with 100% statement, branch, function, and line coverage enforced by @vitest/coverage-v8.npm run build && npm run test:e2e
Playwright smoke and integration tests must pass cleanly.npm run typecheck
npm --prefix server run build
Zero TypeScript compiler errors in both frontend (vue-tsc) and backend (tsc).npm run docs:build
VitePress documentation and TypeDoc API references must compile with zero broken links or markdown errors.Whenever introducing or modifying user flows, features, or architectural components:
README.md, server/README.md, and relevant guides in docs-site/ (e.g., features.md, scaling.md, architecture.md) with the newer user flows, API payloads, or config flags..agents/skills/ (e.g., loungemesh-features-and-testing, loungemesh-architecture, loungemesh-eventyay-integration, etc.) so all AI models (Antigravity, Gemini, Claude, Cursor, Copilot) remain aligned on the newest user flows, contracts, and security patterns.AGENTS.md, GEMINI.md, CLAUDE.md, .cursorrules, and .github/copilot-instructions.md reflect any updated development directives.See LICENSE.md.
298 followers · starred Dec 2017
136 followers · starred Feb 2018
107 followers · starred Sep 2018
108 followers · starred Feb 2018