A full-stack collaborative learning platform featuring Real-time Video Calls, Chat, RAG-based AI Assistance, and Image Understanding.
Built with MERN Stack (React, Node.js, Express, MongoDB), Socket.IO (Real-time), WebRTC (Video), and Python (FastAPI, Groq/Gemini).
- Real-time Chat: Instant messaging with code block support.
- Video Conferencing: Peer-to-peer video calling (Mesh topology).
- Live Room Management: Join/Leave synchronized rooms.
- Contextual Hints: The AI monitors the session topic and suggests learning materials.
- RAG (Retrieval-Augmented Generation): Upload PDFs (
/rag/upload) to verify context-aware answers. - Chatbot: Ask
@ai [question]triggers the AI (powered by Gemini or Groq).
- Image Understanding: Upload images during chat.
- Educational Explainers: The AI analyzes the image (e.g., a diagram) and explains the concept automatically.
- Frontend: React (Vite), TailwindCSS, Zustand (State), Simple-Peer (WebRTC), Framer Motion.
- Backend: Node.js, Express, Socket.IO.
- AI Service: Python (FastAPI), PyPDF, Sentence-Transformers, OpenAI Compatible Clients (Groq/Gemini).
- Database: MongoDB (Local or Atlas).
- Node.js (v18+)
- Python (3.9+)
- MongoDB (Running locally or cloud URI)
Install Frontend Dependencies
cd client
npm installInstall Backend Dependencies
cd server
npm installInstall AI Service Dependencies
cd ai-service
pip install fastapi uvicorn sentence-transformers python-multipart pypdf google-generativeai openai numpy requestsStep 1: Start Backend (Port 5002) In Terminal 1:
cd server
node index.jsStep 2: Start AI Service (Port 8000) In Terminal 2:
cd ai-service
python main.py(Ensure you have set your API Key in main.py)
Step 3: Start Frontend (Vite) In Terminal 3:
cd client
npm run devOpen http://localhost:5173 (or the port shown) in your browser.
- Open the app in two different browser tabs (or windows).
- Join with two different names (e.g.,
AliceandBob) into the same Room ID. - Grant Camera/Mic permissions.
- You should see each other's video stream automatically.
- Type
@ai explain binary searchin the chat. - Verify the AI responds with a concise explanation.
You can test the endpoint using Postman or Curl:
POST http://localhost:8000/image/analyze with a file field.
/
├── client/ # React SPA (Vite)
│ ├── src/pages # Lobby, Room
│ ├── src/store # Zustand (Socket + WebRTC Logic)
│ └── src/comp... # Chat, SmartAssist UI
├── server/ # Node.js Express + Socket.IO
│ └── index.js # Signaling Server & API
└── ai-service/ # Python FastAPI Microservice
└── main.py # RAG Logic, Gemini/Groq wrapper