How abhishek1345/interview_app works
Interview app architecture: users authenticate, open or join an interview, then exchange live media and collaborate through text and a shared drawing canvas. The Dashboard coordinates call setup and interview interactions; backend Socket.IO relays signaling and collaboration events, while authentication controllers persist account records. Evidence is limited to the sampled files; login, route, and some UI implementations are represented only at paths shown in the tree.
Main entry points: Dashboard.jsx Interview dashboard · index.js HTTP and Socket.IO server · SocketProvider.jsx Socket context client · main.jsx React entry and routes
Components 19
Web application
- React entry and routes
src/main.jsx - Interview dashboard
src/Dashboard.jsx - Persisted user state
src/ReduxStore.jsx - Start-call modal
src/components/NewCallModal.jsx - Join-interview modal
src/components/JoinInterviewModal.jsx
Identity and accounts
- Signup and Google auth
src/Signup.jsx - Login screen
src/Login.jsx - Firebase authentication
src/firebase.jsx - Registration routes
backend/routes/register.js - Login routes
backend/routes/login.js - Registration controller
backend/controllers/register.js - Login controller
backend/controllers/login.js
Interview collaboration
- WebRTC peer service
src/service/peer.js - Socket context client
src/socket/SocketProvider.jsx - Shared drawing canvas
src/components/DrawingCanvas.jsx
Backend services
- HTTP and Socket.IO server
backend/index.js - Postgres client
backend/pg.js
Other components
- Interview user
- PostgreSQL database
Connections 27
- Interview user → React entry and routes: opens app
- React entry and routes → Signup and Google auth: routes to
- React entry and routes → Login screen: routes to
- React entry and routes → Interview dashboard: routes to
- Signup and Google auth → Persisted user state: dispatches login
- Login screen → Persisted user state: updates user
- Signup and Google auth → Firebase authentication: authenticates with
- Signup and Google auth → HTTP and Socket.IO server: posts registration
- Login screen → HTTP and Socket.IO server: submits login
- Interview dashboard → Persisted user state: reads user
- Interview dashboard → Start-call modal: opens
- Interview dashboard → Join-interview modal: opens
- Interview dashboard → WebRTC peer service: creates offers
- Interview dashboard → WebRTC peer service: handles answers
- Interview dashboard → Socket context client: sends signaling
- Socket context client → HTTP and Socket.IO server: connects and emits
- HTTP and Socket.IO server → Socket context client: relays events
- Interview dashboard → Shared drawing canvas: renders canvas
- Shared drawing canvas → Socket context client: sends drawing events
- Socket context client → Shared drawing canvas: delivers drawing events
- HTTP and Socket.IO server → Registration routes: mounts routes
- HTTP and Socket.IO server → Login routes: mounts routes
- Registration routes → Registration controller: dispatches registration
- Login routes → Login controller: dispatches login
- Registration controller → Postgres client: queries users
- Login controller → Postgres client: queries users
- Postgres client → PostgreSQL database: reads and writes