Files
certain/README.md
GuidoandClaude Opus 4.8 2c795a57c8 feat: Phase 0 – Gerüst (FastAPI+SQLite, Multi-User-Login, React-App-Shell, Deploy)
Grundgerüst für Certain Finance:
- Backend: FastAPI + SQLAlchemy + SQLite, Alembic-Migrationen (Batch-Mode),
  argon2-Passwort-Hashing, server-seitige Sitzungen im Cookie, Erst-Admin,
  Benutzerverwaltung mit Temporär-Passwort, Einstellungen je Benutzer.
- Ein Prozess, ein Port: uvicorn liefert API (/api) und gebautes SPA aus,
  inkl. SPA-Deeplink-Fallback.
- Frontend: React 18 + Vite + JSX, Design-Tokens (Light/Dark), i18n DE/EN,
  Inline-SVG-Icons (keine Emojis), Login, Passwort-ändern, Dashboard-Platzhalter,
  Benutzer- und Einstellungsseiten.
- Deploy: nativer LXC-Installer + Update-Skript (systemd), env-Vorlage, Doku.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 18:27:42 +02:00

51 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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):
```bash
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):
```bash
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)
```bash
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`](docs/ARCHITECTURE.md) · Fahrplan: [`docs/ROADMAP.md`](docs/ROADMAP.md)