Transform your lectures into engaging, interactive lessons with AI-powered visuals and questions.
EduVisual is an AI-powered tool designed for professors to automatically enhance their lecture materials with visual elements, interactive questions, and clear explanations. It solves the problem of text-heavy, static lecture content by making it more visually appealing and engaging for students.
Professors often struggle to create visually engaging and interactive lecture materials. Traditional slides and notes tend to be text-heavy and static, making it difficult for studentsโespecially visual and auditory learnersโto stay attentive and retain key concepts. While AI tools like Turbo AI and Notion assist students in summarizing content, there is no purpose-built solution for educators to automatically transform their raw materials into visually enhanced, interactive lessons.
EduVisual provides a complete MVP pipeline that transforms raw lecture content into polished, interactive lessons through:
- Content Upload & Parsing - Upload or paste lecture content in text or PDF format
- AI Enhancement - Automatic summarization, clarification, and visual suggestions
- Visual Generation - Contextually relevant images from Unsplash
- Question Generation - Auto-generated reflective, true/false, and multiple-choice questions
- Export Options - Download as PowerPoint, PDF, or JSON
- Text Input: Paste lecture content directly
- File Upload: Support for
.txtand.pdfformats - Content Parsing: Automatic extraction of main topics and subtopics
- Validation: Robust error handling and input validation
- Summarization: Break down content into digestible sections
- Clarification: Add simple explanations for complex concepts
- Visual Suggestions: Identify optimal placement for visuals
- Activity Recommendations: Suggest interactive elements
- Unsplash Integration: Fetch contextually relevant images
- Keyword Extraction: Intelligent topic-based image search
- Fallback Support: Mock visuals when API unavailable
- Multiple Images: 3 image suggestions per topic
- Multiple Question Types: Reflective, true/false, multiple-choice
- 2-3 Questions Per Section: Optimal learning reinforcement
- Explanations: Detailed answers and reasoning
- Flexible Generation: Per-section or bulk generation
- PowerPoint Export: Professional presentation format
- PDF Export: Print-ready document format
- JSON Export: Data format for integration
- Live Preview: See enhanced content before export
- Framework: Express.js (Node.js)
- AI Services:
- Google Gemini 1.5 Flash (Content Enhancement & Questions)
- Unsplash API (Visual Generation)
- Export:
- PptxGenJs (PowerPoint)
- HTML2PDF (PDF)
- File Handling: Multer, PDF-Parse
- Framework: React 19 + Vite
- Styling: Tailwind CSS
- State Management: React Context API
- HTTP Client: Axios
- Routing: React Router v6
- UI Components: Custom + Lucide Icons
- Currently file-based (localStorage on frontend)
- Ready for MongoDB/PostgreSQL integration
- Node.js 18+ and npm
- Git
- API Keys:
- Google Gemini API Key (Free)
- Unsplash API Key (Free)
# Navigate to backend directory
cd backend
# Install dependencies
npm install
# Create .env file
cat > .env << EOF
# AI Provider Configuration
AI_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key_here
# Visual Generator Configuration
UNSPLASH_API_KEY=your_unsplash_api_key_here
# Server Configuration
PORT=5001
NODE_ENV=development
EOF
# Start the backend server
npm startThe backend will run on http://localhost:5001
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Create .env file
cat > .env.local << EOF
VITE_API_URL=http://localhost:5001
EOF
# Start the development server
npm run devThe frontend will run on http://localhost:5173
GET /- Health checkGET /api/ai-status- AI service statusGET /api/visual-status- Visual generator status
POST /api/lectures/text- Upload text content{ "content": "Your lecture text...", "title": "Lecture Title (optional)" }
POST /api/lectures/enhance- Enhance content with AI{ "content": "Your lecture text...", "topic": "Topic (optional)" }
POST /api/lectures/suggest-visuals- Generate visual suggestions{ "topics": ["Topic 1", "Topic 2", "Topic 3"] }
-
POST /api/lectures/generate-questions- Generate questions{ "content": "Your lecture text...", "topic": "Topic (optional)", "count": 3 } -
POST /api/lectures/generate-questions-sections- Generate questions for sections{ "sections": [ { "title": "Section 1", "content": "Content..." } ], "questionsPerSection": 2 }
POST /api/lectures/export/powerpoint- Export to PowerPointPOST /api/lectures/export/pdf- Export to PDFPOST /api/lectures/export/json- Export to JSON
All export endpoints accept:
{
"lectureData": { /* lecture object */ },
"filename": "output.pptx"
}curl -X POST http://localhost:5001/api/lectures/text \
-H "Content-Type: application/json" \
-d '{
"content": "1. Introduction to Machine Learning\n- What is ML\n- Types of ML",
"title": "ML Basics"
}'curl -X POST http://localhost:5001/api/lectures/enhance \
-H "Content-Type: application/json" \
-d '{
"content": "Your lecture content...",
"topic": "Machine Learning"
}'curl -X POST http://localhost:5001/api/lectures/suggest-visuals \
-H "Content-Type: application/json" \
-d '{
"topics": ["Machine Learning", "Neural Networks", "Deep Learning"]
}'curl -X POST http://localhost:5001/api/lectures/generate-questions \
-H "Content-Type: application/json" \
-d '{
"content": "Your lecture content...",
"topic": "Machine Learning",
"count": 3
}'curl -X POST http://localhost:5001/api/lectures/export/powerpoint \
-H "Content-Type: application/json" \
-d '{
"lectureData": { /* complete lecture object */ },
"filename": "my_lecture.pptx"
}'EduVisual/
โโโ backend/
โ โโโ services/
โ โ โโโ aiEnhancer.js # AI content enhancement
โ โ โโโ visualGenerator.js # Unsplash integration
โ โ โโโ questionGenerator.js # Question generation
โ โ โโโ exportService.js # Export functionality
โ โ โโโ README.md # Service documentation
โ โโโ index.js # Main server file
โ โโโ package.json
โ โโโ .env # Environment variables
โ
โโโ frontend/
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ pages/ # Page components
โ โ โโโ services/ # API services
โ โ โโโ context/ # React context
โ โ โโโ hooks/ # Custom hooks
โ โ โโโ App.jsx # Main app component
โ โโโ package.json
โ โโโ .env.local # Frontend env variables
โ
โโโ README.md # This file
# AI Provider
AI_PROVIDER=gemini
GEMINI_API_KEY=your_key_here
# Visual Generator
UNSPLASH_API_KEY=your_key_here
# Server
PORT=5001
NODE_ENV=developmentVITE_API_URL=http://localhost:5001# Test health check
curl http://localhost:5001/
# Test text upload
curl -X POST http://localhost:5001/api/lectures/text \
-H "Content-Type: application/json" \
-d '{"content": "This is a test lecture about machine learning. Machine learning is a subset of artificial intelligence."}'
# Test AI enhancement
curl -X POST http://localhost:5001/api/lectures/enhance \
-H "Content-Type: application/json" \
-d '{"content": "Machine learning basics...", "topic": "ML"}'- Open
http://localhost:5173in your browser - Navigate to Upload page
- Paste or upload lecture content
- View enhanced content with visuals and questions
- Export to desired format
- Intuitive Interface: Clean, modern design with Tailwind CSS
- Dark Mode Support: Comfortable viewing in any lighting
- Responsive Design: Works on desktop, tablet, and mobile
- Real-time Feedback: Loading states and progress indicators
- Modular Architecture: Separated concerns (services, controllers, routes)
- Error Handling: Comprehensive error messages and fallbacks
- API Integration: Seamless integration with Gemini and Unsplash
- Performance: Optimized for fast content processing
# Create Procfile
echo "web: node index.js" > Procfile
# Deploy
git push heroku main# Build
npm run build
# Deploy
vercel deploy- Novel Approach: Combines multiple AI services (Gemini + Unsplash) for comprehensive enhancement
- Unique Features: Automatic topic extraction, multi-format export, fallback mechanisms
- Smart Integration: Seamless workflow from upload to export
- Real Problem: Addresses genuine pain point for educators
- Clear Value: Saves time, improves student engagement, enhances learning outcomes
- Scalable Solution: Works for any subject matter
- Clean Architecture: Well-organized code with separation of concerns
- Robust Implementation: Error handling, validation, fallbacks
- API Integration: Proper use of Gemini and Unsplash APIs
- Performance: Optimized for speed and reliability
- Polished UI: Modern, intuitive interface
- Accessibility: Clear navigation, helpful feedback
- Responsive: Works across devices
- Professional: Production-ready appearance
- Clear Documentation: Comprehensive README with examples
- Easy Setup: Simple installation and configuration
- Well-Commented Code: Self-documenting code
- Demo-Ready: Quick start guide included
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Project: EduVisual - UVEC 2025 Hackathon
- Date: October 19, 2025
- Duration: 9:15 AM - 4:30 PM
- Google Gemini API for AI capabilities
- Unsplash for beautiful, free images
- React and Express communities
- UVEC 2025 Hackathon organizers
For issues, questions, or suggestions:
- Check the documentation in
/backend/services/README.md - Review API examples in this README
- Check error messages and logs
- Open an issue on GitHub
Made with โค๏ธ for educators and students