Initial scaffold: Flask/SQLite backend, React/Vite PWA frontend

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.
This commit is contained in:
2026-08-30 15:02:18 +02:00
commit d97aac0e17
42 changed files with 8274 additions and 0 deletions
Executable
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
set -e
echo "[*] Starting wgBill Local Native Environment..."
SESSION="wgbill"
SESSIONEXISTS=$(tmux list-sessions 2>/dev/null | grep $SESSION || true)
# Only create tmux session if it doesn't exist
if [ "$SESSIONEXISTS" = "" ]
then
echo "[.] Starting new tmux session..."
tmux new-session -d -s $SESSION
sleep 3
# Backend (native)
tmux new-window -t $SESSION -n 'backend'
tmux send-keys -t "$SESSION:backend" 'cd ./backend && source .venv/bin/activate && python run.py' C-m
sleep 5
# Frontend (native)
tmux new-window -t $SESSION -n 'frontend'
tmux send-keys -t "$SESSION:frontend" 'cd ./frontend && npm run dev' C-m
tmux select-layout -t $SESSION tiled
else
echo "[i] Found existing session."
sleep 1
fi
echo "Attaching to tmux session..."
sleep 1
tmux attach-session -t $SESSION