- 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>
28 lines
666 B
Text
28 lines
666 B
Text
# Database
|
|
DATABASE_URL=sqlite:////app/data/quiz.db
|
|
SECRET_KEY=change-me-to-a-random-secret-key-in-production
|
|
ALGORITHM=HS256
|
|
ACCESS_TOKEN_EXPIRE_MINUTES=1440
|
|
|
|
# Redis (use service name in Docker)
|
|
REDIS_URL=redis://redis:6379/0
|
|
|
|
# AI - LiteLLM (supports OpenAI, Anthropic, etc.)
|
|
LITELLM_MODEL=gpt-4o-mini
|
|
LITELLM_API_KEY=your-api-key-here
|
|
|
|
# Vector store
|
|
CHROMA_PERSIST_DIR=/app/chroma_data
|
|
|
|
# SMTP Email for reminders
|
|
MAIL_USERNAME=your-email@example.com
|
|
MAIL_PASSWORD=your-app-password
|
|
MAIL_FROM=your-email@example.com
|
|
MAIL_PORT=587
|
|
MAIL_SERVER=smtp.gmail.com
|
|
MAIL_STARTTLS=true
|
|
MAIL_SSL_TLS=false
|
|
|
|
# File uploads
|
|
UPLOAD_DIR=/app/uploads
|
|
MAX_UPLOAD_SIZE=524288000
|