AI-powered educational platform for creating interactive learning experiences
Features β’ Quick Start β’ Documentation β’ Contributing
EduAgent is a cutting-edge, AI-powered educational platform designed to transform how you learn. By combining advanced RAG (Retrieval-Augmented Generation) with proactive AI agents, EduAgent turns static documents into a dynamic, personalized tutor. Upload your course materials and experience a new way of studying with automatically generated quizzes, flashcards, mind maps, and a Personalized Study Plan that adapts to your unique learning pace.
- Features
- Tech Stack
- Prerequisites
- Quick Start
- Installation
- Configuration
- Project Structure
- Development
- API Documentation
- Documentation
- Contributing
- License
- Support
- π Project-Based Learning - Organize courses into focused projects containing all your documents, chats, and AI-generated study aids.
- π§ Personalized Study Plans - AI identifies your weak spots based on performance and generates a custom tailored curriculum to help you master the material.
- π€ Proactive AI Tutor - Chat with an intelligent agent that not only answers questions but proactively generates quizzes, flashcards, and notes during your conversation.
- π Smart Document Processing - Drag-and-drop PDF, DOCX, TXT, and RTF files. We handle the OCR, text extraction, and vector embedding automatically.
- π Semantic Search & RAG - Stop Ctrl+F. Ask questions and get answers grounded in your specific course materials with source citations.
- π Automated Quizzes - Generate multiple-choice quizzes from any document. The system grades you, explains answers, and tracks your progress.
- π΄ Flashcards (Spaced Repetition) - Turn dense text into flashcards instantly. Perfect for memorizing definitions and key concepts.
- πΊοΈ Interactive Mind Maps - Visualize connections between topics with AI-generated mind maps that help you understand the bigger picture.
- π Enterprise-Grade Security - Built with Supabase Auth, Row Level Security, and Azure usage limits to keep your data safe and costs controlled.
- FastAPI - Modern, fast Python web framework
- PostgreSQL - Relational database with Alembic migrations and pgvector extension
- Azure OpenAI - LLM capabilities for chat, quizzes, flashcards, notes, mind maps, and study plans
- Azure Content Understanding - Document processing and text extraction
- Azure Blob Storage - File storage
- Supabase - Authentication and authorization
- React 19 - UI library
- TypeScript - Type safety
- Vite - Build tool and dev server
- TanStack Router - Type-safe routing
- TanStack Query - Data fetching and caching
- TailwindCSS - Utility-first CSS framework
- Radix UI - Accessible component primitives
Before you begin, ensure you have the following installed:
- Python 3.12+ - Download Python
- Node.js 18+ - Download Node.js
- pnpm -
npm install -g pnpm - Docker & Docker Compose - Install Docker
- Terraform - Install Terraform
- Azure and Supabase - Provisioned via Terraform:
- Terraform modules will set up:
- Azure OpenAI
- Azure Content Understanding (AI Foundry)
- Azure Blob Storage
- Supabase project with authentication enabled
- See infrastructure documentation for setup instructions
- Terraform modules will set up:
Get EduAgent running locally using Docker for the backend and Vite for the frontend:
# Clone the repository
git clone https://github.com/StudentTraineeCenter/edu-agent.git
cd edu-agent
# Start backend stack (API, worker, Postgres, Azurite)
docker-compose up --build api worker db azurite
# In a separate terminal, run DB migrations (one-time)
# Make sure DATABASE_URL is set correctly for your local Postgres
export DATABASE_URL="postgresql+psycopg2://postgres:postgres@localhost:5432/postgres"
alembic upgrade head
# In a new terminal, start the web frontend
cd src/edu-web
pnpm install
pnpm devVisit http://localhost:3000 for the web app and http://localhost:8000 for the API.
The Python services use a uv workspace with pyproject.toml + uv.lock.
cd edu-agent
# Install uv if you don't have it yet (see https://docs.astral.sh/uv/)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install all workspace dependencies (api, worker, shared)
uv sync
# Run database migrations (DATABASE_URL must be set)
export DATABASE_URL="postgresql+psycopg2://postgres:postgres@localhost:5432/postgres"
alembic upgrade head
# Start API locally (without Docker)
cd src/edu-api
uv run python main.py
# Optional: in another terminal, start the worker locally
cd src/edu-worker
uv run python main.pycd src/edu-web
# Install dependencies
pnpm install
# Generate TypeScript types from OpenAPI schema (optional)
pnpm gen:typesYou can configure the backend either via Azure Key Vault (recommended for production) or via local environment variables / .env files (recommended for local dev).
# Azure Key Vault (production)
AZURE_KEY_VAULT_URI=
# Usage Limits (optional, defaults shown)
MAX_DOCUMENT_UPLOADS_PER_DAY=5
MAX_QUIZ_GENERATIONS_PER_DAY=10
MAX_FLASHCARD_GENERATIONS_PER_DAY=10
MAX_CHAT_MESSAGES_PER_DAY=50For local development, you can skip Key Vault and set individual environment variables directly:
# Azure Key Vault (local)
AZURE_KEY_VAULT_URI=
# Usage Limits (optional, defaults shown)
MAX_DOCUMENT_UPLOADS_PER_DAY=5
MAX_QUIZ_GENERATIONS_PER_DAY=10
MAX_FLASHCARD_GENERATIONS_PER_DAY=10
MAX_CHAT_MESSAGES_PER_DAY=50Note: The backend uses python-dotenv, so .env files at the project root work fine for local dev. See Local Development Guide for the full list and details.
Create a .env file in the src/edu-web/ directory:
VITE_SERVER_URL=http://localhost:8000
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=For detailed configuration instructions, see the Local Development Guide.
edu-agent/
βββ src/
β βββ edu-api/ # FastAPI backend (public API)
β βββ edu-worker/ # Background worker (queue/AI processing)
β βββ edu-web/ # React frontend (Vite + TanStack)
β βββ edu-shared/ # Shared DB models, agents, services, schemas
βββ deploy/
β βββ azure/ # Azure Terraform + ACR build tooling
βββ docs/ # Documentation (features, local dev, privacy, etc.)
βββ alembic.ini # Alembic config pointing at src/edu-shared/db/alembic
βββ docker-compose.yaml # Local stack (api, worker, db, azurite)
βββ pyproject.toml # uv workspace definition
βββ uv.lock # Locked dependency graph
βββ ruff.toml # Backend linting/formatting configuration
# From repo root
# Create a new database migration
alembic revision --autogenerate -m "description"
# Apply migrations
alembic upgrade head
# Run API with uv (auto-respects workspace venv)
cd src/edu-api
uv run python main.pycd src/edu-web
# Start development server
pnpm dev
# Build for production
pnpm build
# Run linter
pnpm lint
# Format code
pnpm format
# Run type checking
pnpm type-check
# Generate TypeScript types from OpenAPI schema
pnpm gen:typesBoth backend and frontend use linting and formatting tools:
- Backend: Ruff (configured in
ruff.toml, run viaruff format .andruff check .) - Frontend: ESLint + Prettier (configured in
src/edu-web/)
Once the backend server is running, API documentation is available at:
- Scalar UI (OpenAPI docs):
http://localhost:8000/ - Health Check:
http://localhost:8000/health - OpenAPI Schema:
http://localhost:8000/openapi.json
Comprehensive documentation is available in the docs/ directory:
- Features - Detailed overview of platform features and capabilities
- Local Development - Complete setup and development guide (Docker + uv workspace)
- Azure Deployment - Production deployment instructions for Azure (using
deploy/azure) - Privacy Policy - Privacy and data handling information
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and conventions
- Write clear commit messages
- Add tests for new features when possible
- Update documentation as needed
- Ensure all linting checks pass
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check the docs directory
- Issues: GitHub Issues
Made with β€οΈ for students and educators