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.0 KiB
Bash
32 lines
1.0 KiB
Bash
# Copy to .env and fill in. Never commit .env.
|
|
|
|
# --- Nextcloud ---
|
|
NC_BASE_URL=https://cloud.dominik-roth.eu
|
|
NC_USERNAME=dodox
|
|
# Settings -> Security -> "Devices & Sessions" -> create app password
|
|
NC_APP_PASSWORD=
|
|
# Folder (relative to the user's files root) receipt images get uploaded to.
|
|
# Created automatically on first upload if missing (each path segment).
|
|
NC_UPLOAD_FOLDER=Documents/Cospend/Assets
|
|
|
|
# --- Cospend ---
|
|
# Optional: pre-selects a project in the UI. The app lists all your Cospend
|
|
# projects via the API (GET /ocs/v2.php/apps/cospend/api/v1/projects), so
|
|
# this is just a convenience default, not required.
|
|
COSPEND_PROJECT_ID=
|
|
|
|
# --- Vision LLM (OpenAI-compatible chat completions API) ---
|
|
# OpenAI example:
|
|
# LLM_BASE_URL=https://api.openai.com/v1
|
|
# LLM_MODEL=gpt-4o-mini
|
|
# Gemini (OpenAI-compat layer) example:
|
|
# LLM_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai/
|
|
# LLM_MODEL=gemini-2.0-flash
|
|
LLM_BASE_URL=
|
|
LLM_API_KEY=
|
|
LLM_MODEL=
|
|
|
|
# --- Flask ---
|
|
FLASK_SECRET_KEY=dev-change-me
|
|
DATABASE_PATH=instance/wgbill.sqlite3
|