Skip to content

AaryaKhatate/GnyanSetu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

76 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š GnyanSetu – AI-Powered Interactive Learning Platform

GnyanSetu Badge License: MIT Python Django React MongoDB

Transform static educational content into dynamic, AI-powered interactive lessons

Features β€’ Tech Stack β€’ Getting Started β€’ Architecture β€’ API Documentation


πŸ“– Overview

GnyanSetu (Bridge to Knowledge) is an advanced AI-powered learning platform that revolutionizes education by converting static study materials into interactive, personalized learning experiences. The platform combines cutting-edge AI technology with real-time visualization and adaptive learning mechanisms.

What Makes GnyanSetu Different?

  • πŸŽ“ Interactive AI Teaching - Not just content, but a virtual teacher that explains step-by-step
  • 🎨 Visual Learning - Dynamic whiteboard with animations, diagrams, and real-time drawing
  • πŸ“ Smart Assessment - AI-generated quizzes that adapt to your learning pace
  • πŸ““ Intelligent Notes - Auto-generated, organized notes with key concepts highlighted
  • ⚑ Real-time Interaction - WebSocket-powered live learning experience
  • πŸ“Š Progress Tracking - Comprehensive analytics to monitor learning journey

✨ Features

🎯 Core Learning Features

1. PDF Upload & Processing

  • Drag-and-drop interface for easy file upload
  • Supports PDFs up to 50MB
  • Intelligent text extraction with PyMuPDF
  • OCR support for scanned documents
  • Automatic content structuring

2. AI-Powered Lesson Generation

  • Google Gemini AI integration for content analysis
  • Breaks complex topics into digestible steps
  • Context-aware explanations
  • Adaptive difficulty levels
  • Multi-format content support (PDF, text, images)

3. Interactive Whiteboard Teaching

  • Real-time Canvas Rendering with Konva.js
  • Dynamic text animation (typewriter effect)
  • Shape drawing (rectangles, circles, arrows, lines)
  • Color-coded elements for better understanding
  • Step-by-step progression with visual cues
  • Fullscreen mode for immersive learning
  • Export whiteboard content as images

4. AI-Generated Quizzes

  • Automatic question generation from lesson content
  • Multiple question types (MCQ, True/False, Fill blanks, Short answer)
  • Instant feedback with explanations
  • Score tracking and analytics
  • Adaptive difficulty system

5. Smart Notes System

  • AI-generated summaries of lessons
  • Key points extraction
  • Downloadable PDF with formatting
  • Searchable note database
  • Highlighting and annotations support

6. User Management

  • Google OAuth 2.0 integration
  • Email/password authentication with JWT
  • User profiles and dashboards
  • Learning history tracking

7. Technical Features

  • Microservices architecture
  • API Gateway (Port 8000)
  • WebSocket real-time communication
  • MongoDB database
  • RESTful APIs
  • Comprehensive logging

πŸ› οΈ Tech Stack

Backend Services

Service Technology Port Purpose
API Gateway Flask 2.3 8000 Request routing, load balancing
User Service Django 4.2 + DRF 8002 Authentication, user management
Lesson Service Django 4.2 + DRF 8003 PDF processing, AI lesson generation
Teaching Service Django 4.2 + Channels 8004 WebSocket, real-time teaching
Quiz Service FastAPI (Planned) 8005 Quiz generation and management
Notes Service FastAPI (Planned) 8006 Notes generation and storage

Core Technologies

Backend

  • Django 4.2.16 - Web framework with ORM
  • Django REST Framework - RESTful API development
  • Channels & Daphne - WebSocket and ASGI server
  • Flask 2.3 - Lightweight API gateway
  • FastAPI (Planned) - Modern, fast API framework for Quiz/Notes services

AI & ML

  • Google Generative AI (Gemini Pro) - Content generation and analysis
  • LangChain - AI orchestration and prompt management
  • OpenAI API - Alternative AI model support

Database & Caching

  • MongoDB 4.4+ - Primary NoSQL database
  • Motor - Async MongoDB driver
  • PyMongo - Sync MongoDB driver
  • Redis - Caching and session storage
  • Celery - Distributed task queue

Frontend

  • React 18 - Component-based UI library
  • Tailwind CSS 3 - Utility-first styling
  • Framer Motion - Smooth animations
  • Konva.js - Canvas rendering for whiteboard
  • jsPDF - Client-side PDF generation
  • Lucide React - Modern icon library
  • Axios - HTTP client

Development & DevOps

  • Git - Version control
  • Docker (Planned) - Containerization
  • Nginx (Planned) - Reverse proxy
  • pytest - Testing framework
  • ESLint - JavaScript linting
  • Black - Python code formatting

πŸ—οΈ Project Architecture

Directory Structure

GnyanSetu/
β”‚
β”œβ”€β”€ microservices/              # Backend microservices
β”‚   β”‚
β”‚   β”œβ”€β”€ api-gateway/           # Port 8000 - Flask API Gateway
β”‚   β”‚   β”œβ”€β”€ app.py            # Main gateway application
β”‚   β”‚   β”œβ”€β”€ config.py         # Service registry configuration
β”‚   β”‚   β”œβ”€β”€ requirements.txt  # Gateway dependencies
β”‚   β”‚   └── README.md         # Gateway documentation
β”‚   β”‚
β”‚   β”œβ”€β”€ user-service-django/  # Port 8002 - User Management
β”‚   β”‚   β”œβ”€β”€ accounts/         # User authentication app
β”‚   β”‚   β”‚   β”œβ”€β”€ models.py    # User models
β”‚   β”‚   β”‚   β”œβ”€β”€ views.py     # Auth endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ serializers.py # DRF serializers
β”‚   β”‚   β”‚   └── urls.py      # URL routing
β”‚   β”‚   β”œβ”€β”€ manage.py         # Django management
β”‚   β”‚   β”œβ”€β”€ settings.py       # Django configuration
β”‚   β”‚   β”œβ”€β”€ requirements.txt  # Service dependencies
β”‚   β”‚   └── .env.example      # Environment variables template
β”‚   β”‚
β”‚   β”œβ”€β”€ lesson-service/       # Port 8003 - Lesson Generation
β”‚   β”‚   β”œβ”€β”€ lessons/          # Lesson app
β”‚   β”‚   β”‚   β”œβ”€β”€ views.py     # API endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ models.py    # Lesson models
β”‚   β”‚   β”‚   └── ai_engine.py # AI lesson generator
β”‚   β”‚   β”œβ”€β”€ pdf_processor/    # PDF extraction module
β”‚   β”‚   β”œβ”€β”€ manage.py
β”‚   β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”‚   └── celery_config.py  # Async task configuration
β”‚   β”‚
β”‚   β”œβ”€β”€ teaching-service/     # Port 8004 - Real-time Teaching
β”‚   β”‚   β”œβ”€β”€ teaching/         # Teaching app
β”‚   β”‚   β”‚   β”œβ”€β”€ consumers.py # WebSocket consumers
β”‚   β”‚   β”‚   β”œβ”€β”€ views.py     # API endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ models.py    # Teaching models
β”‚   β”‚   β”‚   └── routing.py   # WebSocket routing
β”‚   β”‚   β”œβ”€β”€ manage.py
β”‚   β”‚   └── requirements.txt
β”‚   β”‚
β”‚   β”œβ”€β”€ quiz-service/         # Port 8005 - Quiz Management (Planned)
β”‚   β”‚   β”œβ”€β”€ main.py          # FastAPI application
β”‚   β”‚   β”œβ”€β”€ models.py        # Pydantic models
β”‚   β”‚   β”œβ”€β”€ quiz_generator.py # AI quiz generation
β”‚   β”‚   β”œβ”€β”€ routes/          # API routes
β”‚   β”‚   └── requirements.txt
β”‚   β”‚
β”‚   β”œβ”€β”€ notes-service/        # Port 8006 - Notes Generation (Planned)
β”‚   β”‚   β”œβ”€β”€ main.py          # FastAPI application
β”‚   β”‚   β”œβ”€β”€ models.py        # Pydantic models
β”‚   β”‚   β”œβ”€β”€ notes_generator.py # AI notes generation
β”‚   β”‚   β”œβ”€β”€ pdf_export.py    # PDF export functionality
β”‚   β”‚   └── requirements.txt
β”‚   β”‚
β”‚   β”œβ”€β”€ requirements.txt      # Microservices dependencies
β”‚   β”œβ”€β”€ start_project.bat     # All services startup script
β”‚   └── logs/                 # Service logs directory
β”‚
β”œβ”€β”€ virtual_teacher_project/   # Legacy Django Project
β”‚   β”œβ”€β”€ teacher_app/          # Core teaching application
β”‚   β”‚   β”œβ”€β”€ views.py          # API endpoints
β”‚   β”‚   β”œβ”€β”€ consumers.py      # WebSocket handlers
β”‚   β”‚   β”œβ”€β”€ models.py         # Django models
β”‚   β”‚   β”œβ”€β”€ mongo.py          # MongoDB integration
β”‚   β”‚   └── urls.py           # URL routing
β”‚   β”‚
β”‚   β”œβ”€β”€ UI/                   # Frontend applications
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ landing_page/     # Landing & Auth (Port 3000)
β”‚   β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ App.jsx   # Main landing component
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.jsx
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Features.jsx
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ LoginModal.jsx
β”‚   β”‚   β”‚   β”‚   β”‚   └── SignupModal.jsx
β”‚   β”‚   β”‚   β”‚   └── index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”‚   β”œβ”€β”€ package.json
β”‚   β”‚   β”‚   └── tailwind.config.js
β”‚   β”‚   β”‚
β”‚   β”‚   └── Dashboard/        # Main Dashboard (Port 3001)
β”‚   β”‚       └── Dashboard/
β”‚   β”‚           β”œβ”€β”€ src/
β”‚   β”‚           β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚           β”‚   β”œβ”€β”€ components/
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ Whiteboard.jsx      # Interactive canvas
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ TeachingCanvas.jsx  # Drawing engine
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ UploadBox.jsx       # PDF upload
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ Quiz.jsx            # Quiz component
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ Notes.jsx           # Notes viewer
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ ChatHistory.jsx     # Conversation history
β”‚   β”‚           β”‚   β”‚   └── SessionManager.jsx  # State management
β”‚   β”‚           β”‚   β”œβ”€β”€ utils/
β”‚   β”‚           β”‚   β”‚   β”œβ”€β”€ api.js             # API client
β”‚   β”‚           β”‚   β”‚   └── websocket.js       # WebSocket client
β”‚   β”‚           β”‚   └── index.js
β”‚   β”‚           β”œβ”€β”€ public/
β”‚   β”‚           β”œβ”€β”€ package.json
β”‚   β”‚           └── tailwind.config.js
β”‚   β”‚
β”‚   β”œβ”€β”€ virtual_teacher_project/ # Django project settings
β”‚   β”‚   β”œβ”€β”€ settings.py       # Configuration
β”‚   β”‚   β”œβ”€β”€ urls.py           # Main URL routing
β”‚   β”‚   β”œβ”€β”€ asgi.py           # ASGI application
β”‚   β”‚   └── wsgi.py           # WSGI application
β”‚   β”‚
β”‚   β”œβ”€β”€ manage.py
β”‚   β”œβ”€β”€ requirements.txt
β”‚   └── .env.example
β”‚
β”œβ”€β”€ requirements.txt          # Consolidated project dependencies
β”œβ”€β”€ .gitignore               # Git ignore rules
β”œβ”€β”€ .env.example             # Environment variables template
β”œβ”€β”€ README.md                # This file
β”œβ”€β”€ LICENSE                  # MIT License
β”œβ”€β”€ CONTRIBUTING.md          # Contribution guidelines
└── docker-compose.yml       # Docker configuration (Planned)

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Client Layer                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚  Landing Page  β”‚         β”‚   Dashboard    β”‚       β”‚
β”‚  β”‚  (Port 3000)   β”‚         β”‚  (Port 3001)   β”‚       β”‚
β”‚  β”‚  - Auth UI     β”‚         β”‚  - Whiteboard  β”‚       β”‚
β”‚  β”‚  - Google OAuthβ”‚         β”‚  - Quiz UI     β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚                         β”‚
            β–Ό                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              API Gateway (Port 8000)                  β”‚
β”‚  - Request Routing                                    β”‚
β”‚  - Load Balancing                                     β”‚
β”‚  - Service Discovery                                  β”‚
β”‚  - Health Checks                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β–Ό          β–Ό          β–Ό          β–Ό          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”
β”‚User Service β”‚ β”‚Lesson  β”‚ β”‚Teachingβ”‚ β”‚Quiz  β”‚ β”‚Notes β”‚
β”‚(Port 8002)  β”‚ β”‚Service β”‚ β”‚Service β”‚ β”‚Svc   β”‚ β”‚ Svc  β”‚
β”‚             β”‚ β”‚(8003)  β”‚ β”‚(8004)  β”‚ β”‚(8005)β”‚ β”‚(8006)β”‚
β”‚- Auth       β”‚ β”‚        β”‚ β”‚        β”‚ β”‚      β”‚ β”‚      β”‚
β”‚- Google     β”‚ β”‚- PDF   β”‚ β”‚- WS    β”‚ β”‚- Gen β”‚ β”‚- Gen β”‚
β”‚  OAuth      β”‚ β”‚  Uploadβ”‚ β”‚- Real  β”‚ β”‚- Evalβ”‚ β”‚- PDF β”‚
β”‚- JWT        β”‚ β”‚- AI Genβ”‚ β”‚  time  β”‚ β”‚      β”‚ β”‚      β”‚
β”‚- Users CRUD β”‚ β”‚- Store β”‚ β”‚- Teach β”‚ β”‚      β”‚ β”‚      β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”¬β”€β”€β”˜ β””β”€β”€β”€β”¬β”€β”€β”˜
       β”‚            β”‚          β”‚          β”‚        β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚      MongoDB           β”‚
               β”‚  - users               β”‚
               β”‚  - lessons             β”‚
               β”‚  - conversations       β”‚
               β”‚  - quizzes             β”‚
               β”‚  - notes               β”‚
               β”‚  - progress            β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚                         β”‚
               β–Ό                         β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   Redis     β”‚        β”‚  Celery      β”‚
        β”‚   Cache     β”‚        β”‚  Task Queue  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Getting Started

Prerequisites

Ensure you have the following installed:

Quick Start (Windows - Recommended)

# 1. Clone the repository
git clone https://github.com/AaryaKhatate/GnyanSetu.git
cd GnyanSetu

# 2. Run the automated startup script
cd microservices
start_project.bat

This will automatically:

  • βœ… Install all Python dependencies
  • βœ… Install all Node.js dependencies
  • βœ… Start MongoDB
  • βœ… Start all microservices (Ports 8000-8004)
  • βœ… Start React applications (Ports 3000, 3001)
  • βœ… Open browser to landing page

Manual Setup

Step 1: Clone Repository

git clone https://github.com/AaryaKhatate/GnyanSetu.git
cd GnyanSetu

Step 2: Backend Setup

# Create and activate virtual environment
python -m venv venv

# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Step 3: Configure Environment

Create .env files in each service directory:

microservices/user-service-django/.env

SECRET_KEY=your-django-secret-key-here
DEBUG=True
MONGODB_URI=mongodb://localhost:27017/gnyansetu
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
JWT_SECRET_KEY=your-jwt-secret-key

microservices/lesson-service/.env

GOOGLE_API_KEY=your-gemini-api-key
MONGODB_URI=mongodb://localhost:27017/gnyansetu
CELERY_BROKER_URL=redis://localhost:6379/0

microservices/teaching-service/.env

MONGODB_URI=mongodb://localhost:27017/gnyansetu
REDIS_URL=redis://localhost:6379/1

Step 4: Start Services

Open 4 separate terminals:

# Terminal 1 - API Gateway (Port 8000)
cd microservices/api-gateway
python app.py

# Terminal 2 - User Service (Port 8002)
cd microservices/user-service-django
python manage.py runserver 8002

# Terminal 3 - Lesson Service (Port 8003)
cd microservices/lesson-service
python manage.py runserver 8003

# Terminal 4 - Teaching Service (Port 8004)
cd microservices/teaching-service
daphne -b 0.0.0.0 -p 8004 teaching_service.asgi:application

Step 5: Start Frontend

Open 2 more terminals:

# Terminal 5 - Landing Page (Port 3000)
cd virtual_teacher_project/UI/landing_page/landing_page
npm install
npm start

# Terminal 6 - Dashboard (Port 3001)
cd virtual_teacher_project/UI/Dashboard/Dashboard
npm install
set PORT=3001 && npm start  # Windows
PORT=3001 npm start          # Linux/Mac

Step 6: Access Application


πŸ“‘ API Documentation

Authentication Endpoints

User Service (Port 8002)

Method Endpoint Description Request Body
POST /api/v1/auth/signup/ Register new user {full_name, email, password, password_confirm, username}
POST /api/v1/auth/login/ User login {email, password}
POST /api/v1/auth/logout/ User logout -
POST /api/v1/auth/google/ Google OAuth login {credential}
GET /api/v1/users/profile/ Get user profile Headers: Authorization: Bearer <token>
PUT /api/v1/users/profile/ Update profile {full_name, email}
GET /api/v1/health/ Health check -

Lesson Management

Lesson Service (Port 8003)

Method Endpoint Description Request Body
POST /api/upload/ Upload PDF file FormData: {file: <pdf>}
POST /api/generate-lesson/ Generate AI lesson {topic, pdf_text, difficulty}
GET /api/lessons/ Get all lessons Query: ?user_id=<id>
GET /api/lessons/<id>/ Get specific lesson -
DELETE /api/lessons/<id>/ Delete lesson -
GET /health Health check -

Real-time Teaching

Teaching Service (Port 8004)

Method Endpoint Description Request Body
GET /api/conversations/ Get conversations Query: ?user_id=<id>
POST /api/conversations/create/ Create conversation {user_id, lesson_id, topic}
DELETE /api/conversations/<id>/ Delete conversation -
GET /api/teaching/<session_id>/ Get teaching session -
WS /ws/teaching/<session_id>/ WebSocket connection -
GET /health Health check -

Quiz System (Planned - Port 8005)

Method Endpoint Description Request Body
POST /api/quizzes/generate/ Generate quiz {lesson_id, question_count, difficulty}
GET /api/quizzes/<lesson_id>/ Get quizzes -
POST /api/quizzes/<quiz_id>/submit/ Submit answers {answers: [{question_id, answer}]}
GET /api/quizzes/<quiz_id>/results/ Get quiz results -
GET /api/quizzes/<quiz_id>/review/ Review quiz with answers -

Notes System (Planned - Port 8006)

Method Endpoint Description Request Body
POST /api/notes/generate/ Generate notes {lesson_id, format, detail_level}
GET /api/notes/<lesson_id>/ Get notes -
GET /api/notes/<note_id>/download/ Download as PDF Query: ?format=pdf
PUT /api/notes/<note_id>/ Update notes {content, highlights}
POST /api/notes/<note_id>/export/ Export notes `{format: 'pdf'

WebSocket Protocol

Connection URL: ws://localhost:8004/ws/teaching/<session_id>/

Client β†’ Server Messages:

// Start lesson
{
  "type": "start_lesson",
  "lesson_id": "12345",
  "user_id": "user_abc"
}

// Request next step
{
  "type": "next_step"
}

// Pause lesson
{
  "type": "pause"
}

Server β†’ Client Messages:

// Lesson step
{
  "type": "step",
  "step": 1,
  "total_steps": 10,
  "speech_text": "Let's learn about...",
  "drawing_commands": [
    {
      "type": "text",
      "text": "Hello World",
      "x": 100,
      "y": 50,
      "fontSize": 24,
      "color": "#000000"
    }
  ]
}

// Lesson complete
{
  "type": "lesson_complete",
  "quiz_available": true,
  "notes_available": true
}

πŸ—ΊοΈ Roadmap

βœ… Phase 1: Core Platform (Completed)

  • Microservices architecture
  • PDF upload and processing
  • AI lesson generation (Gemini 2.0)
  • Real-time whiteboard with WebSocket
  • User authentication (Google OAuth + JWT)
  • Interactive teaching canvas
  • Visualization service with percentage-based coordinates

🚧 Phase 2: Enhancement (Current)

  • Quiz system improvements
  • Notes generation enhancements
  • Performance optimization
  • Mobile responsiveness

πŸ“… Phase 3: Advanced Features (2026)

  • Mobile application
  • Video integration
  • Advanced analytics
  • Multi-language support
  • Gamification

πŸ”§ Phase 4: Scale & Deploy

  • Docker containerization
  • Cloud deployment
  • Performance optimization
  • Security audits

🀝 Contributing

We welcome contributions! Here's how:

  1. Fork the repository
  2. Create a branch: git checkout -b feature/YourFeature
  3. Make your changes
  4. Commit: git commit -m 'Add YourFeature'
  5. Push: git push origin feature/YourFeature
  6. Open a Pull Request

Guidelines

  • Follow PEP 8 for Python
  • Use ESLint for JavaScript
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘₯ Contributors


πŸ“§ Contact & Support


πŸ™ Acknowledgments

  • Google Gemini AI for language models
  • MongoDB for database solutions
  • React and Django communities
  • All contributors and supporters

Made with ❀️ for Education

GnyanSetu - Building Bridges to Knowledge

⭐ Star this repository if you find it helpful!

Report Bug β€’ Request Feature

About

Virtual Tutor is an interactive learning system that converts PDFs into dynamic lessons with voice narration, digital whiteboard visualizations, and real-time diagrams. It adapts to learner needs, generates notes and quizzes, and provides a classroom-like experience using AI and multimodal technologies.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors