test3 / config.py
simikkk's picture
Upload 7 files
f44391a verified
Raw
History Blame Contribute Delete
3.36 kB
"""OmniParse AI — Configuration & Secrets. All sensitive values from env vars."""
import os
# ── API Keys ────────────────────────────────────────────────────────────────
HF_TOKEN = os.environ.get("HF_TOKEN")
GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
SUPABASE_URL = os.environ.get("SUPABASE_URL")
SUPABASE_KEY = os.environ.get("SUPABASE_KEY")
GOOGLE_VISION_KEY = os.environ.get("GOOGLE_VISION_KEY")
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY")
STRIPE_PRICE_BASIC = os.environ.get("STRIPE_PRICE_BASIC")
STRIPE_PRICE_PRO = os.environ.get("STRIPE_PRICE_PRO")
STRIPE_PRICE_ENTERPRISE = os.environ.get("STRIPE_PRICE_ENTERPRISE")
STRIPE_WEBHOOK_SECRET = os.environ.get("STRIPE_WEBHOOK_SECRET")
APP_URL = os.environ.get("APP_URL", "http://localhost:7860")
# ── Session & Cookies ───────────────────────────────────────────────────────
SESSION_TTL_HOURS = 168 # 7 days
COOKIE_NAME = "op_sid"
COOKIE_SECURE = os.environ.get("COOKIE_SECURE", "false").lower() == "true"
COOKIE_HTTPONLY = True
COOKIE_SAMESITE = "lax"
# ── Password Policy ─────────────────────────────────────────────────────────
BCRYPT_ROUNDS = 12
MIN_PASSWORD_LENGTH = 10
REQUIRE_MIXED_CASE = True
REQUIRE_DIGIT = True
REQUIRE_SPECIAL = True
BANNED_PASSWORDS = {
"password", "1234567890", "qwerty12345", "admin12345",
"letmein123", "welcome123", "monkey1234", "dragon1234",
"password123", "omniparse123", "invoice1234", "changeme123",
}
# ── File Upload Limits ──────────────────────────────────────────────────────
MAX_FILE_SIZE_MB = 20
MAX_FILES_PER_REQ = 10
# ── Rate Limits ─────────────────────────────────────────────────────────────
RATE_GLOBAL = "200/minute"
RATE_AUTH = "10/minute"
RATE_UPLOAD = "30/minute"
RATE_API = "60/minute"
# ── Plans ───────────────────────────────────────────────────────────────────
PLAN_LIMITS = {"free": 20, "basic": 200, "pro": 2000, "enterprise": float("inf")}
PLAN_LABELS = {"free": "Free", "basic": "Basic", "pro": "Pro", "enterprise": "Enterprise"}
PLAN_PRICES = {"free": 0, "basic": 29, "pro": 129, "enterprise": 499}
PLAN_PRICE_IDS = {
"basic": STRIPE_PRICE_BASIC, "pro": STRIPE_PRICE_PRO,
"enterprise": STRIPE_PRICE_ENTERPRISE,
}
# ── Database ────────────────────────────────────────────────────────────────
SQLITE_PATH = os.environ.get("SQLITE_PATH", "omniparse.db")
USE_SUPABASE = bool(SUPABASE_URL and SUPABASE_KEY)