Architecture Overview
EduMate is an AI-powered educational assessment platform that generates multiple-choice questions based on PDF documents using Bloom’s Taxonomy. The system consists of several interconnected components working together to provide a seamless experience.System Architecture
Infrastructure Components
PostgreSQL Database
Stores user accounts, authentication data, and assessment history
- Port: 5432
- Database: edumate
- User: edumate_user
Qdrant Vector Database
Stores document embeddings for semantic search
- Port: 6333
- Collections: Dynamic (created per uploaded document)
Redis Queue
Manages background job processing for document chunking and question generation
- Port: 6379
- Queue: RQ (Redis Queue)
Ollama
Provides local LLM inference for embeddings and chat
- Port: 11434
- Models: qwen3-embedding:0.6b, llama3.2:1b
Gemini API
External API for advanced question generation
- Model: gemini-2.5-flash-lite
- API: Google Generative Language API
FastAPI Backend
RESTful API server handling all business logic
- Port: 8000
- Framework: FastAPI with Uvicorn
System Requirements
Hardware Requirements
Minimum Requirements
- CPU: 4 cores (8 cores recommended)
- RAM: 8GB (16GB recommended for Ollama models)
- Storage: 20GB free space
- GPU: Optional (improves Ollama performance)
Software Requirements
- Operating System: Linux (Ubuntu 20.04+), macOS, or Windows with WSL2
- Python: 3.9 or higher
- Node.js: 18.x or higher
- PostgreSQL: 13 or higher
- Redis: 6.x or higher
- Docker: Optional (for Qdrant)
Deployment Workflow
Set Up Databases
Install and configure PostgreSQL and Qdrant vector databaseSee: Database Setup and Vector Database Setup
Install Ollama
Install Ollama and download required AI modelsSee: Ollama Setup
Deploy Backend
Configure Python environment and start the FastAPI serverSee: Backend Deployment
Deploy Frontend
Build and serve the React applicationSee: Frontend Deployment
Network Ports
Ensure the following ports are available:| Service | Port | Protocol | Description |
|---|---|---|---|
| FastAPI | 8000 | HTTP | Backend API server |
| Vite Dev Server | 5173 | HTTP | Frontend dev server |
| PostgreSQL | 5432 | TCP | Database |
| Redis | 6379 | TCP | Queue backend |
| Qdrant | 6333 | HTTP | Vector database |
| Ollama | 11434 | HTTP | LLM inference |
Environment Variables
The following environment variables need to be configured:Next Steps
Follow the deployment guides in order:- Database Setup - Set up PostgreSQL
- Vector Database Setup - Configure Qdrant
- Ollama Setup - Install and configure Ollama
- Backend Deployment - Deploy the FastAPI server
- Frontend Deployment - Build and serve the React app