- Migrate all service files from hardcoded SQLite to dual SQLite/PostgreSQL support - Add PostgreSQL service to docker-compose.yml - Create database abstraction layer (database.py) with execute_query, row_to_dict helpers - Update all 7 service files: account, rating, contact, ai_cost, quota, site_assistant, admin - Add new admin endpoint /database-stats for table size and row count visualization - Add database_type field to system health endpoint - Update .env.example with proper PostgreSQL connection string
95 lines
2.4 KiB
Plaintext
95 lines
2.4 KiB
Plaintext
# Flask
|
|
FLASK_ENV=production
|
|
FLASK_DEBUG=0
|
|
SECRET_KEY=replace-with-a-long-random-secret-key
|
|
INTERNAL_ADMIN_EMAILS=support@dociva.io
|
|
|
|
# Site Domain (used in sitemap, robots.txt, emails)
|
|
SITE_DOMAIN=https://dociva.io
|
|
FRONTEND_URL=https://dociva.io
|
|
|
|
# Redis
|
|
REDIS_URL=redis://redis:6379/0
|
|
|
|
# Celery
|
|
CELERY_BROKER_URL=redis://redis:6379/0
|
|
CELERY_RESULT_BACKEND=redis://redis:6379/1
|
|
|
|
# OpenRouter AI
|
|
OPENROUTER_API_KEY=
|
|
OPENROUTER_MODEL=nvidia/nemotron-3-super-120b-a12b:free
|
|
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1/chat/completions
|
|
|
|
# Google Generative AI (fallback provider)
|
|
GOOGLE_API_KEY=AIzaSyAKUp_qGpJPFMaDxIe6x3PjV4ghRTQuZ3Q
|
|
GOOGLE_MODEL=chat-bison-001
|
|
|
|
# Premium document translation (recommended for Translate PDF)
|
|
DEEPL_API_KEY=
|
|
DEEPL_API_URL=https://api-free.deepl.com/v2/translate
|
|
DEEPL_TIMEOUT_SECONDS=90
|
|
|
|
# AWS S3
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
AWS_S3_BUCKET=dociva-temp-files
|
|
AWS_S3_REGION=eu-west-1
|
|
|
|
# File Processing
|
|
MAX_CONTENT_LENGTH_MB=50
|
|
UPLOAD_FOLDER=/tmp/uploads
|
|
OUTPUT_FOLDER=/tmp/outputs
|
|
FILE_EXPIRY_SECONDS=1800
|
|
STORAGE_ALLOW_LOCAL_FALLBACK=true
|
|
# Use DATABASE_PATH for SQLite (development) or DATABASE_URL for PostgreSQL (production)
|
|
DATABASE_PATH=/app/data/dociva.db
|
|
|
|
# CORS
|
|
CORS_ORIGINS=https://dociva.io,https://www.dociva.io
|
|
|
|
# SMTP (Password reset + contact notifications)
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
SMTP_FROM=noreply@dociva.io
|
|
SMTP_USE_TLS=true
|
|
|
|
# Stripe Payments
|
|
STRIPE_SECRET_KEY=
|
|
STRIPE_WEBHOOK_SECRET=
|
|
STRIPE_PRICE_ID_PRO_MONTHLY=
|
|
STRIPE_PRICE_ID_PRO_YEARLY=
|
|
|
|
# Sentry Error Monitoring
|
|
SENTRY_DSN=
|
|
SENTRY_ENVIRONMENT=production
|
|
|
|
# PostgreSQL (production)
|
|
DATABASE_URL=postgresql://dociva:${POSTGRES_PASSWORD}@postgres:5432/dociva
|
|
POSTGRES_DB=dociva
|
|
POSTGRES_USER=dociva
|
|
POSTGRES_PASSWORD=replace-with-strong-postgres-password
|
|
|
|
# Frontend
|
|
VITE_SITE_DOMAIN=https://dociva.io
|
|
VITE_SENTRY_DSN=
|
|
|
|
# Frontend Analytics / Ads (Vite)
|
|
VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX
|
|
VITE_PLAUSIBLE_DOMAIN=dociva.io
|
|
VITE_PLAUSIBLE_SRC=https://plausible.io/js/script.js
|
|
VITE_GOOGLE_SITE_VERIFICATION=
|
|
VITE_ADSENSE_CLIENT_ID=ca-pub-XXXXXXXXXXXXXXXX
|
|
VITE_ADSENSE_SLOT_HOME_TOP=1234567890
|
|
VITE_ADSENSE_SLOT_HOME_BOTTOM=1234567891
|
|
VITE_ADSENSE_SLOT_TOP_BANNER=1234567892
|
|
VITE_ADSENSE_SLOT_BOTTOM_BANNER=1234567893
|
|
|
|
# Feature Flags (set to "false" to disable a specific tool)
|
|
FEATURE_EDITOR=true
|
|
FEATURE_OCR=true
|
|
FEATURE_REMOVEBG=true
|
|
|
|
VITE_CLARITY_PROJECT_ID=vzw2jb2ipq
|