apiVersion: capsule.dev/v0.1
kind: Capsule
name: lkmeet-video-conference-core
version: 0.1.0
type: subsystem
purpose:
summary: 'Encapsulates the core client-side logic and UI components for a LiveKit
video conference. This includes handling room connection, E2EE setup, and rendering
the main conference view, providing a robust foundation for any LiveKit video
application.
'
owns:
- LiveKit room connection and management
- E2EE setup and integration
- Main video conference UI rendering
does_not_own:
- Pre-join UI
- Landing page or room selection logic
interfaces:
provides:
- kind: library
name: VideoConferenceClientImpl
description: React component for connecting to a LiveKit room with custom parameters.
- kind: library
name: PageClientImpl
description: React component for connecting to a LiveKit room with pre-join and
dynamic parameters.
requires:
- kind: http_api
name: /api/connection-details
from_capsule: lkmeet-livekit-auth-api
description: Required by PageClientImpl to fetch connection details.
dependencies:
capsules:
- name: lkmeet-livekit-client-utils
version: '>=0.1.0'
- name: lkmeet-livekit-ui-components
version: '>=0.1.0'
agent:
summary_for_ai: 'This capsule contains the core client-side video conference logic.
Focus on robust LiveKit room connection, E2EE integration, and handling user choices.
Ensure seamless integration with `livekit-client` and `@livekit/components-react`.
Error handling for connection and media device access is crucial.
'
verification:
invariants:
- Room connection must be stable and handle disconnections gracefully.
- E2EE setup must correctly initialize the worker and key provider.
- Video and audio tracks must be enabled based on user choices.
- Error messages must be user-friendly and actionable.
x-reuse:
notes: 'The `CONN_DETAILS_ENDPOINT` is hardcoded to `/api/connection-details`. This
will need to be updated if the API route changes in a different project. The `alert`
messages for `DeviceUnsupportedError` and other errors are hardcoded and might
need to be customized or replaced with a more generic notification system. The
default `videoCodec` ''vp9'' is hardcoded in `PageClientImpl.tsx`.
'
x-reconstruct:
install: install.json