############################################################# # CLASSROOM COPILOT - ENVIRONMENT CONFIGURATION ############################################################# ## ===================================================== ## DOCKER INITIALIZATION CONFIGURATION ## ===================================================== # Set RUN_INIT=true to run initialization tasks on container startup # Set to false or remove to skip initialization (for subsequent deployments) RUN_INIT=true # INIT_MODE options: # - infra: Infrastructure only (Neo4j schema, calendar, Supabase buckets) # - full: Full setup including demo school and users (infra → demo-school → demo-users → gais-data) # - infra,demo-school,demo-users: Custom combination (comma-separated) # - infra,gais-data: Infrastructure + GAIS data import INIT_MODE=infra,demo-school,demo-users ## ===================================================== ## APP INFORMATION & METADATA ## ===================================================== APP_NAME=ClassroomCopilot APP_VERSION=0.0.1 APP_DESCRIPTION="An AI copilot for learners and educators." APP_AUTHOR=KevlarAI APP_AUTHOR_EMAIL=kcar@kevlarai.com APP_PROTOCOL=https ## ===================================================== ## SERVER & RUNTIME CONFIGURATION ## ===================================================== UVICORN_PORT=8080 UVICORN_WORKERS=2 UVICORN_TIMEOUT=300 DEV_MODE=false BACKEND_DEV_MODE=false ## ===================================================== ## ADMIN USER CONFIGURATION ## ===================================================== # Regular Admin ADMIN_EMAIL=admin@classroomcopilot.ai ADMIN_PASSWORD=&%4Dm1n&% ADMIN_NAME="Kevin Carter (Admin)" ADMIN_USERNAME=kcar ADMIN_DISPLAY_NAME="K Car (Admin)" ADMIN_WORKER_EMAIL=kcar@kevlarai.com ## ===================================================== ## SUPABASE DATABASE CONFIGURATION ## ===================================================== SUPABASE_URL=http://192.168.0.155:8000 ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhdXRoZW50aWNhdGVkIiwiaWF0IjoxNzcxODE3MjE5LCJpc3MiOiJzdXBhYmFzZSIsInN1YiI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCIsImV4cCI6MzM0ODYxNzIxOSwicm9sZSI6ImFub24ifQ.JbmQOTOBAzpBJ9JttOrGlo_JTXDXhCjYMjKiFvRkaNQ SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhdXRoZW50aWNhdGVkIiwiaWF0IjoxNzcxNjk3NTY0LCJpc3MiOiJzdXBhYmFzZSIsImV4cCI6MjA4NzA1NzU2NCwicm9sZSI6InNlcnZpY2Vfcm9sZSJ9.zgeBoO5aVkI3lxLUlwGpyGKaUX9xMcTv_C7vkby8Rk4 POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password POSTGRES_HOST=db POSTGRES_DB=postgres JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters-long ## ===================================================== ## NEO4J DATABASE CONFIGURATION ## ===================================================== USER_NEO4J=neo4j PASSWORD_NEO4J=&%N304j&% NEO4J_CC_DB=classroomcopilot PORT_NEO4J_BOLT=7687 PORT_NEO4J_HTTP=7474 PORT_NEO4J_HTTPS=7473 ## ===================================================== ## OLLAMA AI SERVICE CONFIGURATION ## ===================================================== HOST_OLLAMA=http://ollama.kevlarai.com PORT_OLLAMA=11434 OLLAMA_MODEL=qwen2.5-coder:32b ## ===================================================== ## LANGCHAIN CONFIGURATION ## ===================================================== LANGCHAIN_API_KEY= LANGCHAIN_TRACING_V2=false LANGCHAIN_PROJECT='Classroom Copilot' ## ===================================================== ## GOOGLE API CONFIGURATION ## ===================================================== YOUTUBE_API_KEY=AIzaSyDbpJInK6dsFUjY6oG60FlzYkj7JUJmUNs GOOGLE_CLIENT_SECRETS_FILE=Users/kcar/ClassroomCopilot/backend/app/secrets/google_cloud_yt_credentials.json ## ===================================================== ## DOCUMENT PROCESSING SERVICES ## ===================================================== # External Service Endpoints TIKA_URL=https://tika.kevlarai.com TIKA_TIMEOUT=300 DOCLING_URL=https://docling.kevlarai.com ## ===================================================== ## DOCUMENT STRUCTURE DISCOVERY & ANALYSIS ## ===================================================== # Auto-trigger Phase 1 components after document upload AUTO_TIKA_PROCESSING=true AUTO_PAGE_IMAGES=true AUTO_DOCUMENT_ANALYSIS=true AUTO_SPLIT_MAP_GENERATION=true ## ===================================================== ## DOCLING BUNDLE PROCESSING PIPELINES ## ===================================================== # Pipeline Execution Control (Sequential: no_ocr → ocr → vlm) AUTO_DOCLING_NO_OCR=true AUTO_DOCLING_OCR=true AUTO_DOCLING_VLM=true # Bundle Architecture: BY_PAGE Precedence (overrides size thresholds) # These settings take PRIORITY over DOCLING_SPLIT_THRESHOLD DOCLING_NO_OCR_BY_PAGE=false DOCLING_OCR_BY_PAGE=false DOCLING_VLM_BY_PAGE=true # Bundle Processing Decision Logic: # 1. BY_PAGE=true → Always create page-based bundles (docling_bundle_split) # 2. BY_PAGE=false + pages < SPLIT_THRESHOLD → Single bundle (docling_bundle) # 3. BY_PAGE=false + pages >= SPLIT_THRESHOLD → Section/chunk bundles (docling_bundle_split) ## ===================================================== ## QUEUE SYSTEM & PERFORMANCE ## ===================================================== # Service Limits (prevent server overload) QUEUE_TIKA_LIMIT=3 QUEUE_DOCLING_LIMIT=1 QUEUE_LLM_LIMIT=1 QUEUE_SPLIT_MAP_LIMIT=10 QUEUE_DOCUMENT_ANALYSIS_LIMIT=5 QUEUE_PAGE_IMAGES_LIMIT=3 # Worker Configuration QUEUE_WORKERS=3 # Service Timeouts (per pipeline type) DOCLING_BUNDLE_TIMEOUT=7200 DOCLING_FRONTMATTER_TIMEOUT=300 DOCLING_NOOCR_TIMEOUT=600 DOCLING_OCR_TIMEOUT=900 DOCLING_VLM_TIMEOUT=1800 # Bundle Architecture Settings DOCLING_SPLIT_THRESHOLD=50 DOCLING_FALLBACK_CHUNK_PAGES=25 DOCLING_USE_SPLIT_MAP=true ## ===================================================== ## DOCLING API CONFIGURATION (NEW BUNDLE ARCHITECTURE) ## ===================================================== # Global Processing Settings (Docling API v1.5.1 Compliance) DOCLING_PDF_BACKEND=dlparse_v4 DOCLING_INCLUDE_IMAGES=true DOCLING_IMAGES_SCALE=2.0 # OCR Engine Configuration (Global) OCR_ENGINE=easyocr OCR_LANG=en DOCLING_PICTURE_DESCRIPTION_AREA_THRESHOLD=0.05 # ===================================================== # PIPELINE-SPECIFIC PROCESSING OPTIONS # ===================================================== # NO_OCR Pipeline (Fast baseline processing) DOCLING_NO_OCR_TABLE_MODE=fast DOCLING_NO_OCR_TABLE_CELL_MATCHING=false DOCLING_NO_OCR_DO_FORMULA_ENRICHMENT=false DOCLING_NO_OCR_DO_CODE_ENRICHMENT=false DOCLING_NO_OCR_DO_TABLE_STRUCTURE=true DOCLING_NO_OCR_DO_PICTURE_CLASSIFICATION=false DOCLING_NO_OCR_DO_PICTURE_DESCRIPTION=false # OCR Pipeline (Accurate processing with text enhancement) DOCLING_OCR_TABLE_MODE=accurate DOCLING_OCR_TABLE_CELL_MATCHING=true DOCLING_OCR_DO_FORMULA_ENRICHMENT=true DOCLING_OCR_DO_CODE_ENRICHMENT=false DOCLING_OCR_DO_TABLE_STRUCTURE=true DOCLING_OCR_DO_PICTURE_CLASSIFICATION=true DOCLING_OCR_DO_PICTURE_DESCRIPTION=false # VLM Pipeline (Vision-enhanced processing) DOCLING_VLM_MODEL=got_ocr_2 # VLM_MODEL_LOCAL={"repo_id": "ds4sd/SmolDocling-256M-preview", "response_format": "doctags"} # VLM_MODEL_API={"url": "http://localhost:1234/v1/chat/completions", "response_format": "doctags"} DOCLING_VLM_TABLE_MODE=accurate DOCLING_VLM_TABLE_CELL_MATCHING=true DOCLING_VLM_DO_FORMULA_ENRICHMENT=true DOCLING_VLM_DO_CODE_ENRICHMENT=false DOCLING_VLM_DO_TABLE_STRUCTURE=true DOCLING_VLM_DO_PICTURE_CLASSIFICATION=true DOCLING_VLM_DO_PICTURE_DESCRIPTION=true ## ===================================================== ## APPLICATION DOMAINS & URLS ## ===================================================== VITE_APP_URL=https://app.classroomcopilot.ai APP_API_URL=https://api.classroomcopilot.ai APP_GRAPH_URL=https://192.168.0.208 APP_BOLT_URL=bolt://192.168.0.208 ## ===================================================== ## REDIS CONFIGURATION & ENVIRONMENT ISOLATION ## ===================================================== # Redis Connection REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD= REDIS_SSL=false # Environment-Specific Database Isolation REDIS_DB_DEV=0 # Development database (auto-wiped) REDIS_DB_PROD=1 # Production database (persistent) REDIS_DB_TEST=2 # Testing database (isolated) # Connection URLs (auto-constructed) REDIS_URL_DEV=redis://redis:6379/0 REDIS_URL_PROD=redis://redis:6379/1 REDIS_URL_TEST=redis://redis:6379/2 # Queue Persistence Strategy REDIS_PERSIST_DEV=false # No persistence in dev (fast startup) REDIS_PERSIST_PROD=true # Full persistence in prod (durability) REDIS_TASK_TTL_DEV=3600 # 1 hour task retention in dev REDIS_TASK_TTL_PROD=86400 # 24 hour task retention in prod # Health Check & Recovery REDIS_HEALTH_CHECK_INTERVAL=30 # Health check every 30s REDIS_RECOVERY_ENABLED=true # Enable automatic recovery REDIS_MAX_RETRY_ATTEMPTS=3 # Max connection retry attempts # Memory-Aware Queue Management QUEUE_MAX_MEMORY_MB=2048 # 2GB total queue memory limit QUEUE_MAX_USER_MEMORY_MB=512 # 512MB per user limit MAX_FILE_SIZE_MB=100 # 100MB max single file size MEMORY_WARNING_THRESHOLD=0.8 # Warn users at 80% capacity MEMORY_REJECT_THRESHOLD=0.95 # Reject uploads at 95% capacity # Upload Queue Settings UPLOAD_QUEUE_ENABLED=true # Enable intelligent upload queuing UPLOAD_IMMEDIATE_PROCESSING=false # Process files immediately (legacy mode) UPLOAD_STATUS_POLLING_INTERVAL=5 # Status polling interval (seconds) ## ===================================================== ## CORS & SECURITY SETTINGS ## ===================================================== CORS_SITE_URL=https://app.classroomcopilot.ai,https://api.classroomcopilot.ai,https://graph.classroomcopilot.ai CORS_GRAPH_URL={APP_GRAPH_URL} CORS_API_URL={APP_API_URL} ## ===================================================== ## FILE SYSTEM & STORAGE PATHS ## ===================================================== NODE_FILESYSTEM_PATH=./data/node_filesystem BACKEND_INIT_PATH=./data/init_data LOG_PATH=./data/logs/ ## =================================================##### ## LOGGING CONFIGURATION ## ===================================================== # Log level must be lowercase for Node.js services using Pino logger (storage, functions) # Valid values: trace, debug, info, warn, error, fatal LOG_LEVEL=debug ## =================================================##### ## API KEYS ## ===================================================== OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_API_KEY=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