Backend (src/server, runs on Bun): - GibbzHttpServer (health, /api/ice, /api/rooms, static, keepalive tuning) - SignalingServer with Peer/Room/RoomRegistry classes and typed messages - IceConfigProvider (env STUN/TURN + coturn HMAC ephemeral creds) - StaticFileServer (dist/ with public/ fallback, traversal guard) - Tracing (OpenTelemetry SDK), AppConfig; createApp() factory for tests Frontend (src/client, built by Vite): - VoiceApp orchestrator implementing VoiceAppContext - WebRtcManager + PeerSession (perfect negotiation, pc rebuild, quality monitor) - SignalingClient + ReconnectController, AudioManager, SpatialAudio, Microphone/ScreenShare controllers, ScreensUi/RosterUi/SpatialMap/ SpeakingMonitor, Settings/Welcome dialogs, LayoutManager, MatrixChat Tooling: bun scripts (dev/start/test/typecheck), vite.config.ts root src/client with publicDir public/static, vitest-config for CI-less runs, bun-based Dockerfile (oven/bun:1), Makefile + README updated, legacy server.js/tracing.js/test.js/public js removed. Verified locally: tsc --noEmit clean, vitest run 6/6 green, vite build ok, server smoke-tested serving dist + signaling endpoints under Node. Local bun binary segfaults (SIGILL) on this host, so 'bun test' itself was not executable here; tests are vitest-API compatible which bun test maps.
38 lines
805 B
Docker
38 lines
805 B
Docker
# gibbz voice — Bun runtime, Vite-built TypeScript client
|
|
ARG APP_RELEASE=dev
|
|
|
|
FROM oven/bun:1 AS build
|
|
WORKDIR /app
|
|
|
|
COPY package.json bun.lock* ./
|
|
RUN bun install
|
|
|
|
COPY tsconfig.json vite.config.ts ./
|
|
COPY src ./src
|
|
COPY public ./public
|
|
|
|
# Inject build release into index.html if APP_RELEASE is specified
|
|
ARG APP_RELEASE
|
|
ENV APP_RELEASE=${APP_RELEASE}
|
|
RUN if [ -n "${APP_RELEASE}" ]; then \
|
|
sed -i "s/window.__APP_RELEASE__ || \"dev\"/\"${APP_RELEASE}\"/g" ./src/client/index.html; \
|
|
fi
|
|
|
|
RUN bun run build && bun install --production
|
|
|
|
FROM oven/bun:1
|
|
WORKDIR /app
|
|
|
|
COPY --from=build /app/node_modules ./node_modules
|
|
COPY --from=build /app/dist ./dist
|
|
COPY --from=build /app/src/server ./src/server
|
|
|
|
ENV PORT=8080 \
|
|
HOST=0.0.0.0
|
|
|
|
EXPOSE 8080
|
|
|
|
USER bun
|
|
|
|
CMD ["bun", "src/server/index.ts"]
|