How fahim-muntasir/syncora24 works
Syncora24 is a real-time language-practice platform. A participant signs in, discovers or creates a practice room, joins it, then communicates through room chat and live audio/video or screen sharing; hosts and moderators can manage participants and room state. The frontend uses API calls for account and room operations and Socket.IO for live events and WebRTC signaling. MongoDB holds persistent application data, while Redis holds temporary room and moderation state. Some source excerpts were unavailable, so uncertain controller-to-library wiring is not detailed.
Main entry points: app.ts Express API · useRoomSocket.ts Room Socket Hook · RoomLayout.tsx Room Experience · page.tsx Next.js App
Components 22
Web Client
- Next.js App
apps/frontend/app/page.tsx - Sign-in / Sign-up
apps/frontend/components/Auth/SignIn.tsx - Room Experience
apps/frontend/components/practicezoon/Room/RoomLayout.tsx - Room Discovery
apps/frontend/components/practicezoon/RoomCardList.tsx - Client State
apps/frontend/libs/store.ts - Room Chat
apps/frontend/components/practicezoon/Room/Chat/index.tsx
Backend API
- Express API
apps/backend/src/app/app.ts - Authentication
apps/backend/src/api/v1/auth/index.ts - Room Operations
apps/backend/src/api/v1/room/index.ts - Chat API
apps/backend/src/api/v1/chat/index.ts - Auth Logic
apps/backend/src/lib/auth/index.ts - Room Logic
apps/backend/src/lib/room/index.ts - Moderation Logic
apps/backend/src/lib/moderation/index.ts - WebRTC Signaling API
apps/backend/src/api/v1/webrtc/index.ts
Live Communication
- Socket Client
apps/frontend/libs/socket/SocketManager.ts - Room Socket Hook
apps/frontend/hooks/useRoomSocket.ts - Peer Connections
apps/frontend/libs/webrtc/PeerManager.ts - Socket Server
apps/backend/src/socket/socket.ts
Application State
- User Model
apps/backend/src/models/Auth.ts - MongoDB
- Redis
Other components
- Participant
Connections 25
- Participant → Next.js App: uses
- Next.js App → Sign-in / Sign-up: opens
- Next.js App → Room Discovery: browses
- Participant → Room Experience: joins
- Sign-in / Sign-up → Express API: requests auth
- Room Discovery → Express API: requests rooms
- Express API → Authentication: routes auth
- Express API → Room Operations: routes rooms
- Express API → Chat API: routes chat
- Authentication → Auth Logic: delegates auth
- Room Operations → Room Logic: delegates rooms
- Auth Logic → User Model: uses model
- User Model → MongoDB: persists users
- Room Logic → Redis: room state
- Moderation Logic → Redis: moderation state
- Room Experience → Room Socket Hook: joins live
- Room Socket Hook → Socket Client: emits events
- Socket Client → Socket Server: Socket.IO
- Socket Server → Room Socket Hook: dispatches events
- Room Socket Hook → Peer Connections: manages peers
- Peer Connections → Socket Client: signals offers
- Socket Server → WebRTC Signaling API: handles signaling
- Room Experience → Room Chat: shows chat
- Room Experience → Client State: reads room state
- Room Socket Hook → Client State: updates state