You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eta OTT is an AI-driven educational platform that transforms static learning material into interactive, intelligent experiences. It integrates advanced machine learning (Whisper, LLMs, Vector Search) with an OTT-style streaming interface, giving students personalized knowledge graphs, an AI tutor, real-time doubt resolution, and multi-format content extraction.
๐ Key Features
Area
Feature
๐ง AI Tutor
Context-aware AI assistant powered by Groq Llama-3 that answers student queries grounded in the uploaded course material.
๐ธ๏ธ Knowledge Graph
Auto-generated concept maps rendered via React-Force-Graph-2D & D3-force, backed by Neo4j.
๐ฅ Multi-Source Extraction
Extract knowledge from PDFs (PyMuPDF), Videos (OpenAI Whisper), YouTube (yt-dlp), and Web pages (Playwright + BeautifulSoup).
โก Real-Time Doubts
Live synchronization and doubt solving powered by Socket.io with role-based resolution (Student โ Faculty).
๐ Text-to-Speech
High-quality speech synthesis for content via AWS Polly.
๐ฑ Cross-Platform
Fully responsive web app + native mobile app scaffold (Expo / React Native).
Vector-based retrieval using Qdrant for extremely accurate information lookup.
๐ Dark / Light Theme
Theme toggle with CSS custom properties for a premium glassmorphic UI.
๐๏ธ System Architecture
High-Level Architecture
graph TD
User((Student / Faculty / Admin))
subgraph "Frontend Clients"
Web["eta-web<br/>(React 19 + Vite 7)"]
Mobile["eta-mobile<br/>(Expo 51 / React Native 0.74)"]
end
subgraph "Core Backend โ Node.js / Express"
API["Express API Gateway<br/>(8 Route Modules)"]
WS["Socket.io<br/>Real-Time Doubts"]
MW["Middleware Stack<br/>(Auth ยท RBAC ยท Cache ยท Upload ยท Error)"]
end
subgraph "ML Service โ Python / FastAPI"
FastAPI["FastAPI Engine :8000"]
PDF["PDF Extractor<br/>(PyMuPDF)"]
Video["Video Extractor<br/>(OpenAI Whisper)"]
YT["YouTube Extractor<br/>(yt-dlp)"]
WebEx["Web Extractor<br/>(Playwright + BS4)"]
end
subgraph "Persistence Layer"
Mongo[("MongoDB<br/>Metadata & Models")]
Neo[("Neo4j<br/>Knowledge Graph")]
Qdrant[("Qdrant<br/>Vector Store")]
Redis[("Redis<br/>Caching & Sessions")]
Cloud[("Cloudinary<br/>Media CDN")]
end
User <--> Web & Mobile
Web & Mobile <--> API
API <--> WS
API <--> MW
API <--> FastAPI
FastAPI --> PDF & Video & YT & WebEx
API <--> Mongo & Neo & Redis & Cloud
FastAPI <--> Qdrant
Loading
Knowledge Extraction Workflow
sequenceDiagram
participant U as User (Faculty)
participant B as Backend (Express)
participant C as Cloudinary CDN
participant ML as ML Service (FastAPI)
participant V as Qdrant Vector DB
participant G as Neo4j Graph DB
U->>B: Upload Content (PDF / Video / YouTube / Web URL)
B->>C: Store media asset
C-->>B: Return secure URL
B->>ML: POST /extract {file_url, content_type}
ML->>ML: Text / Transcript Extraction
ML->>V: Store vector embeddings
ML-->>B: Return extracted text, topics, keywords
B->>G: Create/update concept nodes & relationships
B-->>U: Content ready โ processingStatus: completed
Loading
AI Doubt Resolution Flow
sequenceDiagram
participant S as Student
participant B as Backend
participant Q as Qdrant
participant G as Neo4j
participant LLM as Groq Llama-3
S->>B: Ask doubt (via Socket.io or REST)
B->>Q: Retrieve relevant context vectors
B->>G: Fetch related concept nodes
B->>LLM: Prompt with context + question
LLM-->>B: Generated answer
B-->>S: AI response (real-time via Socket.io)
Note over B: Faculty can also reply manually
Loading
๐ ๏ธ Tech Stack
๐ For a detailed per-library breakdown with version numbers and project-specific usage, see Documents/TechStack.md.
git clone https://github.com/<your-org>/ETA-OTT-_V2.git
cd ETA-OTT-_V2
2. ML Service Setup (Python)
cd ml-service
# Create & activate virtual environment
python -m venv venv
source venv/bin/activate # Linux / macOS# venv\Scripts\activate # Windows# Install dependencies (includes PyTorch, Whisper, Playwright)
pip install -r requirements.txt
# Install Playwright browsers (required for web extraction)
playwright install
# Start the extraction service on port 8000
python main.py
3. Backend Setup (Node.js)
cd backend
# Install dependencies
npm install
# Create your .env file (see Environment Configuration below)
cp .env.example .env # then fill in values# Start in development mode (uses nodemon)
npm run dev
flowchart LR
A[/"๐ Upload PDF ยท ๐ฅ Video ยท ๐ YouTube ยท ๐ Web URL"/] --> B["โ๏ธ Cloudinary<br/>Media Storage"]
B --> C["โ๏ธ Backend calls<br/>ML Service /extract"]
C --> D{"Content Type?"}
D -->|PDF| E["PyMuPDF<br/>OCR + Text"]
D -->|Video| F["OpenAI Whisper<br/>Transcription"]
D -->|YouTube| G["yt-dlp Download<br/>โ Whisper"]
D -->|Web| H["Playwright<br/>โ BS4 Parse"]
E & F & G & H --> I["๐ Chunk Text<br/>โ Vector Embeddings"]
I --> J[("๐ฎ Qdrant<br/>Vector Store")]
I --> K["๐ท๏ธ Extract Entities<br/>Topics & Keywords"]
K --> L[("๐ธ๏ธ Neo4j<br/>Knowledge Graph")]
J & L --> M["๐ค Query Phase:<br/>Student asks doubt"]
M --> N["Retrieve context from<br/>Qdrant + Neo4j"]
N --> O["๐ง Groq Llama-3<br/>Generate Answer"]
O --> P["๐ฌ Response sent<br/>via Socket.io"]
Loading
Ingestion โ Faculty uploads a PDF, Video, YouTube link, or Web URL โ stored on Cloudinary.
Extraction โ Backend calls ml-service โ dispatches to the correct extractor.
Vectorization โ Extracted text is chunked and stored in Qdrant with high-dimensional embeddings.
Graph Construction โ Named entities and concepts are pushed to Neo4j as nodes and relationships.
Query Phase โ When a student asks a doubt, the backend retrieves relevant context from Qdrant & Neo4j, then feeds it to Groq Llama-3 to generate a precise, source-grounded answer.
๐จ Design & UX
Glassmorphic UI โ Transparent, layered components with backdrop-blur effects for a modern, premium feel.
Micro-Interactions โ Hover effects and fluid transitions powered by Framer Motion & GSAP.
Dark/Light Mode โ Full theme system with CSS custom properties, toggled via ThemeContext.
Responsive Layouts โ Seamless adaptation from desktop to mobile viewports via Tailwind breakpoints.
Role-Specific Dashboards โ Dedicated UIs for Students, Faculty, and Admins.
๐๏ธ Available Scripts
Backend
npm run dev # Start with nodemon (hot-reload)
npm start # Production start
npm test# Run Jest tests
Frontend
npm run dev # Vite dev server (HMR)
npm run build # Production build
npm run preview # Preview production build
npm run lint # ESLint check
ML Service
python main.py # Start FastAPI on port 8000
Mobile
npm start # Expo dev server
npm run android # Launch Android
npm run ios # Launch iOS
npm run web # Launch web preview
๐ฃ๏ธ Roadmap
Live Collaboration โ Shared whiteboards for faculty and students.
Gamification โ Badges and progression levels based on confidence scores.
Offline Mode โ Download content for offline viewing on the mobile app.
Multi-Language Support โ AI translation for transcripts and documents.
Full Mobile App โ Complete feature parity with the web application.