How anshulmaletha/signvoice-async works
SignVoice is a browser app for accessible two-person video meetings. Users enter through the landing/login experience, start or join a shareable room, then communicate by video/audio, signs, speech, and typed chat in one conversation. MeetingRoom orchestrates local media, signaling, recognition, and incoming-sign speech; WebRTC carries media while Supabase Realtime handles signaling. Stores support conversation history and account/workspace views. The map follows README capabilities and shown imports/calls; unsampled integrations are omitted or shown only where documented.
Main entry points: MeetingRoom.jsx Meeting room · App.jsx App navigation · DashboardView.jsx Dashboard · webrtcSignaling.js Realtime signaling
Components 23
App entry
- App navigation
src/App.jsx - Landing experience
src/components/LandingPage.jsx - Login view
src/views/LoginView.jsx
Meeting runtime
- Meeting IDs
src/utils/meetingId.js - Meeting room
src/components/meeting/MeetingRoom.jsx - Participant identity
src/services/sessionService.js - WebRTC media
src/services/webrtcManager.js - Realtime signaling
src/services/webrtcSignaling.js - Supabase
src/services/supabaseClient.js
Communication modes
- Gesture recognition
src/gesture/GestureRecognizer.js - Custom classifier
src/gesture/customGestureClassifier.js - Classifier model data
src/gesture/customModelData.js - Speech recognition
src/speech/SpeechToText.js - Text to speech
src/audio/TextToSpeech.js - Meeting chat and captions
src/components/meeting/MeetingRoom.jsx - Speech workspace
src/components/SpeechUserPanel.jsx
Workspace state
- Dashboard
src/views/DashboardView.jsx - Conversation history
src/services/conversationStore.js - Saved sessions
src/services/sessionStore.js - Friends
src/services/friendStore.js - Profile
src/services/profileStore.js - Settings
src/services/settingsStore.js
Other components
- Participant
Connections 25
- Participant → App navigation: uses
- App navigation → Landing experience: renders
src/App.jsx - App navigation → Login view: renders
src/App.jsx - App navigation → Meeting IDs: generates ID
src/App.jsx - App navigation → Meeting room: routes to
src/App.jsx - Participant → Meeting room: joins room
- Meeting room → Meeting IDs: validates ID
src/components/meeting/MeetingRoom.jsx - Meeting room → Participant identity: gets identity
src/components/meeting/MeetingRoom.jsx - Meeting room → WebRTC media: acquires media
src/components/meeting/MeetingRoom.jsx - Meeting room → Realtime signaling: creates channel
src/components/meeting/MeetingRoom.jsx - Meeting room → Gesture recognition: starts recognition
src/components/meeting/MeetingRoom.jsx - Meeting room → Speech recognition: uses recognition
src/components/meeting/MeetingRoom.jsx - Meeting room → Conversation history: records signs
src/components/meeting/MeetingRoom.jsx - Meeting room → Text to speech: speaks incoming sign
src/components/meeting/MeetingRoom.jsx - WebRTC media → Realtime signaling: sends session signals
src/services/webrtcManager.js - Realtime signaling → Supabase: uses client
src/services/webrtcSignaling.js - Gesture recognition → Custom classifier: classifies landmarks
src/gesture/GestureRecognizer.js - Custom classifier → Classifier model data: reads model data
src/gesture/customGestureClassifier.js - Speech recognition → Text to speech: checks speech state
src/speech/SpeechToText.js - Dashboard → Saved sessions: reads and saves
src/views/DashboardView.jsx - Dashboard → Friends: reads
src/views/DashboardView.jsx - Dashboard → Conversation history: reads
src/views/DashboardView.jsx - Dashboard → Profile: reads
src/views/DashboardView.jsx - Speech workspace → Speech recognition: captures speech
- Meeting room → Meeting chat and captions: hosts chat
src/components/meeting/MeetingRoom.jsx