pdf-quiz-generator/docker-compose.yml
ifedan-ed b876f13fac Initial commit: PDF Quiz Generator app
- FastAPI backend with JWT auth, roles (admin/moderator/user)
- PDF upload (up to 500MB) with streaming, PyMuPDF text extraction
- ChromaDB vectorization per page with metadata
- LiteLLM AI question extraction from PDF (not generation)
- Image extraction from PDF pages, graceful fallback
- Quiz modes: timed (countdown timer) + learning (answers shown inline)
- Page-by-page question navigation with dot navigator
- TTS endpoint using LiteLLM (Google Vertex / OpenAI voices)
- Admin dashboard: AI model management per task, user role management
- Moderator role: upload PDFs, create sections, generate quizzes
- Spaced repetition reminders via SMTP email (SM-2 intervals)
- APScheduler daily reminder jobs
- Celery + Redis for background PDF processing
- React frontend with all pages
- Docker Compose deployment (nginx + backend + celery + redis)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 20:04:53 +00:00

53 lines
1 KiB
YAML

version: "3.8"
services:
frontend:
build: ./frontend
ports:
- "80:80"
depends_on:
- backend
restart: unless-stopped
backend:
build: ./backend
ports:
- "8000:8000"
env_file:
- ./backend/.env
volumes:
- uploads_data:/app/uploads
- chroma_data:/app/chroma_data
- sqlite_data:/app/data
environment:
- DATABASE_URL=sqlite:////app/data/quiz.db
depends_on:
- redis
restart: unless-stopped
celery:
build: ./backend
command: celery -A app.tasks worker --loglevel=info --concurrency=2
env_file:
- ./backend/.env
volumes:
- uploads_data:/app/uploads
- chroma_data:/app/chroma_data
- sqlite_data:/app/data
environment:
- DATABASE_URL=sqlite:////app/data/quiz.db
depends_on:
- redis
restart: unless-stopped
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
restart: unless-stopped
volumes:
uploads_data:
chroma_data:
sqlite_data:
redis_data: