import os from dotenv import load_dotenv load_dotenv() BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) class Config: SECRET_KEY = os.environ.get("FLASK_SECRET_KEY", "dev-change-me") DATABASE_PATH = os.path.join( BASE_DIR, os.environ.get("DATABASE_PATH", "instance/wgbill.sqlite3") ) UPLOAD_DIR = os.path.join(BASE_DIR, "uploads") CORS_ORIGIN = os.environ.get("CORS_ORIGIN", "http://localhost:5173") # Server address only - who's calling is now per logged-in user (see # auth.py), not a single shared NC_USERNAME/NC_APP_PASSWORD. NC_BASE_URL = os.environ.get("NC_BASE_URL", "").rstrip("/") NC_UPLOAD_FOLDER = os.environ.get("NC_UPLOAD_FOLDER", "Documents/Cospend/Assets").strip("/") # Optional - pre-selects a project in the UI; the app lists all of the # user's Cospend projects via the API either way, so this isn't required. COSPEND_DEFAULT_PROJECT_ID = os.environ.get("COSPEND_PROJECT_ID", "") LLM_BASE_URL = os.environ.get("LLM_BASE_URL", "").rstrip("/") LLM_API_KEY = os.environ.get("LLM_API_KEY", "") LLM_MODEL = os.environ.get("LLM_MODEL", "") # Fernet key (Fernet.generate_key()) used to encrypt stored NC app # passwords at rest. Required in production; a request-time error is # raised if missing so this can't be silently skipped. TOKEN_ENCRYPTION_KEY = os.environ.get("TOKEN_ENCRYPTION_KEY", "") SESSION_COOKIE_NAME = "wgbill_session" # Sessions are sliding - refreshed on use, so an active user never gets # logged out; an idle one expires after this many days. SESSION_TTL_DAYS = int(os.environ.get("SESSION_TTL_DAYS", "30")) # Cookies need Secure (HTTPS-only) in any real deployment; only disable # for plain-http local dev. SESSION_COOKIE_SECURE = os.environ.get("SESSION_COOKIE_SECURE", "true").lower() == "true"