AI-powered Lecture Companion – Search, summarize, and quiz yourself on lecture videos in seconds.
🚀 Built at HackRice 2025.
EduTube Notes transforms long lecture recordings into structured, searchable study material.
Upload any lecture video, and within minutes you can:
- 🔍 Search "When was photosynthesis explained?" → Jump to exact timestamp
- 📝 Auto-generate notes from key sections
- ❓ Generate quizzes & flashcards to test understanding
- 🎬 Deep link playback → resume from the relevant video segment
Powered by TwelveLabs video AI, Gemini LLM, and a modern React + Node.js stack.
Frontend (React + Vite + Tailwind)
│
▼
Backend (Fastify + TypeScript)
│
┌───────┼────────┐
│ │ │
▼ ▼ ▼
TwelveLabs Gemini AI Google Cloud (GCS)
(Video AI) (Notes/Quiz) (File Storage)
- 🎬 Video Uploads → Stored in Google Cloud Storage
- 🧠 TwelveLabs Video Indexing → Breaks down video into segments with embeddings
- 🔍 Semantic Search → Ask natural-language questions about the lecture
- 📝 Gemini Notes → Clean, structured study notes
- ❓ Gemini Quizzes → Auto-generated questions & flashcards
- 🔄 Real-time Updates → Video processing status and content generation
- ⚛️ React 18
- ⚡ Vite + TypeScript
- 🎨 Tailwind CSS
- 🎭 Framer Motion (animations)
- 🎯 Lucide React (icons)
- 🚀 Fastify (Node.js, TypeScript)
- 🔒 CORS enabled for cross-origin requests
- 📁 File upload handling
- 🎬 TwelveLabs – Video understanding & embeddings
- 🧠 Gemini API – Notes & quiz generation
- ☁️ Google Cloud Storage – File uploads
hackrice/
├── apps/
│ ├── api/ # Backend API server
│ │ ├── src/
│ │ │ ├── routes/ # API endpoints
│ │ │ │ ├── search.ts # Video search functionality
│ │ │ │ ├── videos.ts # Video management
│ │ │ │ └── webhooks.twelvelabs.ts # TwelveLabs webhooks
│ │ │ ├── services/ # Business logic
│ │ │ │ ├── twelvelabs.ts # TwelveLabs integration
│ │ │ │ ├── gemini.ts # Gemini AI service
│ │ │ │ └── db.ts # Database operations
│ │ │ └── index.ts # Server entry point
│ │ └── package.json
│ └── web/ # Frontend React app
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── animate-ui/ # Animation components
│ │ │ ├── Features.tsx
│ │ │ ├── Hero.tsx
│ │ │ └── ...
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Utility functions
│ │ └── main.tsx # React entry point
│ └── package.json
├── packages/
│ └── types/ # Shared TypeScript types
│ └── index.ts
└── package.json # Workspace configuration
GET /health- Health checkPOST /videos/upload- Upload video filesGET /videos/:id- Get video detailsPOST /search- Search within video contentPOST /webhooks/twelvelabs- TwelveLabs webhook handler
- Upload → Video stored in Google Cloud Storage
- Index → TwelveLabs processes video for searchability
- Search → Query video content using natural language
- Generate → Create notes and quizzes with Gemini AI
Uses TwelveLabs' video understanding API to enable semantic search across video content. Users can ask questions like "What was discussed about machine learning?" and get timestamped results.
Leverages Google's Gemini AI to automatically generate:
- Structured study notes from video transcripts
- Quiz questions based on video content
- Flashcards for key concepts
The application provides real-time updates on video processing status through server-sent events, keeping users informed of indexing progress.
Transform your learning experience with AI-powered video analysis. 🎓✨