Backend: receipt upload -> LLM vision extraction (OpenAI-compatible, provider-agnostic), item review/edit, per-group splitting against Cospend projects/members, highlight+upload via WebDAV, public share link, bill creation via Cospend's OCS API (verified against real source, not just doc summaries). Frontend: capture -> review -> group -> summary flow as an installable PWA. install.sh / run.sh (venv + npm, tmux session) instead of Docker, per the ~/Projects/gain pattern.
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
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")
|
|
|
|
NC_BASE_URL = os.environ.get("NC_BASE_URL", "").rstrip("/")
|
|
NC_USERNAME = os.environ.get("NC_USERNAME", "")
|
|
NC_APP_PASSWORD = os.environ.get("NC_APP_PASSWORD", "")
|
|
NC_UPLOAD_FOLDER = os.environ.get("NC_UPLOAD_FOLDER", "wgBill").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", "")
|