cverse-frontend-app v0.1.0
template
capsule://quake0day/[email protected]
The Vue.js single-page application (SPA) that provides the user interface for interacting with digital humans. It includes character management, chat UI, settings, and WebRTC integration. It's a template because the UI/UX, character data, and specific landing pages are bespoke.
Owns
- Vue.js components and pages
- Frontend routing and state management
- Internationalization resources
- WebRTC client logic
- Public assets (icons, specific character images)
Does not own
- Backend API implementation
- AI inference logic
- LiveKit server integration
AI orientation
An AI agent working on this capsule would focus on UI/UX improvements, adding new frontend features, integrating with new backend API endpoints, or adapting the UI for different character types. It requires knowledge of Vue.js, TypeScript, and WebRTC client-side interactions.
Avoid
- Modifying backend logic or AI inference models directly from this capsule.
Provides
http_api:frontend-spa— The main user interface for the digital human system.
Requires
http_api:backend-apifromcverse-api-server— REST API for character management, settings, and task status.http_api:websocket-apifromcverse-api-server— WebSocket API for real-time chat and media control.library:livekit-client-sdk— LiveKit client SDK for WebRTC connections.
Invariants (must always hold)
- The UI must be responsive and accessible.
- Real-time chat and video must function correctly.
- Character data display must be consistent with backend API.
Source files (55)
Click any file to view its content; the path on the right shows where the file lands when this capsule is installed.
src/frontend/.env.production→.env.productionsrc/frontend/.gitignore→.gitignoresrc/frontend/.vscode/extensions.json→.vscode/extensions.jsonsrc/frontend/index.html→index.htmlsrc/frontend/package-lock.json→package-lock.jsonsrc/frontend/package.json→package.jsonsrc/frontend/public/favicon.svg→public/favicon.svgsrc/frontend/public/icons.svg→public/icons.svgsrc/frontend/public/liukanshan/idle-poster.png→public/liukanshan/idle-poster.pngsrc/frontend/public/liukanshan/knowledge.png→public/liukanshan/knowledge.pngsrc/frontend/public/liukanshan/persona.png→public/liukanshan/persona.pngsrc/frontend/public/liukanshan/poses.png→public/liukanshan/poses.pngsrc/frontend/public/liukanshan/session-a.png→public/liukanshan/session-a.pngsrc/frontend/public/liukanshan/session-b.png→public/liukanshan/session-b.pngsrc/frontend/public/liukanshan/session-b3.png→public/liukanshan/session-b3.pngsrc/frontend/README.md→README.mdsrc/frontend/src/App.vue→src/App.vuesrc/frontend/src/components/AppHeader.vue→src/components/AppHeader.vuesrc/frontend/src/components/AvatarUpload.vue→src/components/AvatarUpload.vuesrc/frontend/src/components/CharacterCard.vue→src/components/CharacterCard.vuesrc/frontend/src/components/ChatPanel.vue→src/components/ChatPanel.vuesrc/frontend/src/components/ControlBar.vue→src/components/ControlBar.vuesrc/frontend/src/components/CvSelect.vue→src/components/CvSelect.vuesrc/frontend/src/components/KnowledgeSourceManager.vue→src/components/KnowledgeSourceManager.vuesrc/frontend/src/components/LanguageSwitcher.vue→src/components/LanguageSwitcher.vuesrc/frontend/src/components/SetupBanner.vue→src/components/SetupBanner.vuesrc/frontend/src/components/TaskProgressCard.vue→src/components/TaskProgressCard.vuesrc/frontend/src/components/VideoPlayer.vue→src/components/VideoPlayer.vuesrc/frontend/src/components/VoiceWaveform.vue→src/components/VoiceWaveform.vuesrc/frontend/src/composables/useChat.ts→src/composables/useChat.tssrc/frontend/src/composables/useDirectWebRTC.ts→src/composables/useDirectWebRTC.tssrc/frontend/src/composables/useVisualInput.ts→src/composables/useVisualInput.tssrc/frontend/src/composables/useWebRTC.ts→src/composables/useWebRTC.tssrc/frontend/src/i18n/index.ts→src/i18n/index.tssrc/frontend/src/i18n/messages.ts→src/i18n/messages.tssrc/frontend/src/main.ts→src/main.tssrc/frontend/src/pages/CharacterEditPage.vue→src/pages/CharacterEditPage.vuesrc/frontend/src/pages/CharacterListPage.vue→src/pages/CharacterListPage.vuesrc/frontend/src/pages/KanshanLandingPage.vue→src/pages/KanshanLandingPage.vuesrc/frontend/src/pages/LandingPage.vue→src/pages/LandingPage.vuesrc/frontend/src/pages/LaunchConfigPage.vue→src/pages/LaunchConfigPage.vuesrc/frontend/src/pages/SessionPage.vue→src/pages/SessionPage.vuesrc/frontend/src/pages/SettingsPage.vue→src/pages/SettingsPage.vuesrc/frontend/src/router/index.ts→src/router/index.tssrc/frontend/src/services/api.ts→src/services/api.tssrc/frontend/src/stores/characters.ts→src/stores/characters.tssrc/frontend/src/stores/settings.ts→src/stores/settings.tssrc/frontend/src/style.css→src/style.csssrc/frontend/src/types/index.ts→src/types/index.tssrc/frontend/src/utils/sessionLaunchState.ts→src/utils/sessionLaunchState.tssrc/frontend/src/utils/voice.ts→src/utils/voice.tssrc/frontend/tsconfig.app.json→tsconfig.app.jsonsrc/frontend/tsconfig.json→tsconfig.jsonsrc/frontend/tsconfig.node.json→tsconfig.node.jsonsrc/frontend/vite.config.ts→vite.config.ts
Plus capsule.yaml and
install.json.