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>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user