ScarriffleandClaude Opus 5 9b9ce77267 feat: Das Logo laesst sich zuschneiden
Ein Screenshot von einer Website ist selten schon das Logo – da ist Rand
drumherum oder drei Marken nebeneinander. Nach dem Waehlen kommt deshalb ein
Rahmen: ziehen zum Verschieben, Regler zum Zoomen.

Der Rahmen IST der Ausschnitt. Deshalb nichts abgedunkelt und keine
Hilfslinien darin – man soll das Ergebnis sehen und nicht eine Vorschau
davon, die man erst uebersetzen muss.

Zu Beginn steht das GANZE Bild im Rahmen. Wer nicht zuschneiden will, drueckt
Uebernehmen und bekommt, was er hochgeladen hat; Zuschneiden ist ein Zoom,
kein Zwang. Verschieben geht nur, solange das Bild den Rahmen ueberragt –
sonst schoebe man ein kleines Bild aus seinem eigenen Ausschnitt heraus.

Geschnitten wird im Browser, hochgeladen nur noch der Ausschnitt: Der Server
bekommt kein Bild, das er gar nicht behalten soll.

Der durchsichtige Grund bleibt durchsichtig – ein weisser Kasten fiele auf
dunklem Hintergrund sofort auf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 19:50:16 +02:00
2026-09-07 19:35:37 +02:00

Certain Finance

Selbstgehostete Finanzverwaltung für Privathaushalte. Budgets, mehrere Konten (EUR und CHF), ein konfigurierbares Dashboard und Import von Kontoauszügen – lauffähig in einem Proxmox-LXC, erreichbar über eine Web-UI hinter dem eigenen Nginx Proxy Manager.

Der interne Codename/Anzeigename steht zentral an einer Stelle (web/src/brand.js, backend/app/branding.py); der Rest ist generisch.

Stack

  • Backend: FastAPI · SQLAlchemy · SQLite · Alembic · argon2 · Server-Sitzungen (Cookie)
  • Frontend: React 18 · Vite · reines JSX · react-i18next (DE/EN) · Inline-SVG-Icons
  • Betrieb: ein systemd-Dienst (uvicorn) liefert API und gebautes Frontend auf einem Port aus

Entwicklung (lokal)

Backend (Terminal 1):

cd backend
python3 -m venv .venv && . .venv/bin/activate   # Python 3.11+
pip install -r requirements.txt
APP_DATA_DIR=./data uvicorn app.main:app --reload --port 8000

Frontend (Terminal 2):

cd web
npm install
npm run dev        # http://localhost:5173  (leitet /api an :8000 weiter)

Beim ersten Start wird ein Admin angelegt (Standard admin / changeme, per APP_ADMIN_USERNAME / APP_ADMIN_PASSWORD änderbar).

Installation im LXC (Proxmox, Debian/Ubuntu)

git clone <repo-url> /opt/certain-finance
cd /opt/certain-finance
sudo ./deploy/install.sh

Danach im Nginx Proxy Manager einen Proxy-Host auf http://<LXC-IP>:<APP_PORT> anlegen (HTTPS via Let's Encrypt). Updates: sudo ./deploy/update.sh.

Details: docs/ARCHITECTURE.md · Fahrplan: docs/ROADMAP.md

S
Description
No description provided
Readme
8.7 MiB
Languages
Python 55.3%
JavaScript 22.8%
Swift 16.3%
CSS 5%
Shell 0.6%