b586d27b7731f777d153ed19a8765a6497647b69
- Anmeldung über Argon2id und JWT in httpOnly-Cookies, Refresh mit echter Rotation über die neue Tabelle refresh_token - AuthProvider-Protokoll als Vorbereitung für OIDC, Administrator-Anlage beim Erststart mit erzwungenem Passwortwechsel - CRUD für Konten, Kategorien (zweistufiger Baum), Firmen, Recurrences, Preisversionen, Buchungen, Budgets, Vorlagen und Sparziele - Fälligkeiten mit Overlay-Logik: abrufen, bestätigen, auslassen, zurücksetzen - Kontosalden zum Stichtag, Monatsübersicht mit Plan-Ist-Vergleich - SECRET_KEY jetzt mindestens 32 Zeichen; Platzhalter in Produktion abgelehnt - 61 neue Integrationstests, insgesamt 148 grün Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
moneyfy
Selbst gehostete Web-Anwendung zur Planung monatlicher Kosten und Einkünfte. Single-User, deutschsprachige Oberfläche, ausgelegt für den Betrieb im Homelab hinter einem Reverse Proxy.
Status: in Entwicklung. Siehe CHANGELOG.md.
Screenshots
Platzhalter – werden ergänzt, sobald die Oberfläche steht.
| Dashboard | Cashflow-Kalender | Firmen |
|---|---|---|
| folgt | folgt | folgt |
Funktionsumfang
- Wiederkehrende Zahlungen und Einkünfte über vollständige RFC-5545-RRULEs, inklusive Werktagsverschiebung nach NRW-Feiertagen.
- Preishistorie je Vertrag, sodass vergangene Monate betragstreu bleiben.
- Verträge mit Mindestlaufzeit, Kündigungsfrist und automatischer Verlängerung.
- Ratenzahlungen mit Restschuld- und Restratenberechnung.
- Rücklagenbildung für nicht-monatliche Posten.
- Firmenlogos und Markenfarben, lokal zwischengespeichert.
- Auswertungen: Monatsübersicht, Cashflow-Kalender, 12-Monats-Forecast, Kategorien, Abo-Übersicht, Jahresvergleich, Budgets, Sparziele.
- Benachrichtigungen per SMTP und Apprise.
Technischer Stack
| Bereich | Technologie |
|---|---|
| Backend | Python 3.12, FastAPI, SQLAlchemy 2 (async), Alembic, Pydantic v2 |
| Datenbank | PostgreSQL 17 |
| Scheduler | APScheduler (in-process) |
| Frontend | React 18, TypeScript, Vite, TailwindCSS |
| Charts | Recharts |
| Tests | pytest + httpx, vitest + testing-library |
Schnellstart (lokale Entwicklung)
Voraussetzungen: Python 3.12, uv, Node 20+, eine erreichbare PostgreSQL-17-Instanz.
git clone https://git.menzel.center/menzeljonas/moneyfy.git
cd moneyfy
cp .env.example backend/.env # DATABASE_URL und SECRET_KEY anpassen
make install # Backend-Abhängigkeiten in backend/.venv
make migrate # Schema anlegen
make seed # Kategoriebaum und Standardregeln
make dev # http://localhost:8000/api/docs
Nützliche Ziele: make test, make lint, make format, make check.
Konfiguration
Alle Einstellungen kommen aus Umgebungsvariablen; .env.example enthält die
vollständige, kommentierte Liste. Die wichtigsten:
| Variable | Standard | Bedeutung |
|---|---|---|
DATABASE_URL |
– | PostgreSQL-DSN, postgresql:// wird auf asyncpg umgestellt |
SECRET_KEY |
– | Signaturschlüssel für JWTs, mind. 32 Zeichen (openssl rand -hex 32) |
MONEYFY_ADMIN_USER / MONEYFY_ADMIN_PASSWORD |
admin / – |
Beim Erststart angelegter Benutzer |
TIMEZONE |
Europe/Berlin |
Zeitzone der gesamten Anwendung |
HOLIDAY_REGION |
DE-NW |
Feiertagsregion für Werktagsverschiebungen |
LOGO_STORAGE_DIR |
/data/logos |
Verzeichnis des Logo-Caches |
LOGODEV_API_KEY / BRANDFETCH_API_KEY |
leer | Optionale Logo-Provider |
SMTP_* |
leer | Mailversand für Benachrichtigungen |
APPRISE_URLS |
leer | Komma-separierte Apprise-Ziele |
COOKIE_SECURE |
true |
Hinter HTTPS true, für lokales HTTP false |
SCHEDULER_ENABLED |
true |
Täglicher Benachrichtigungslauf um 07:00 |
Projektstruktur
backend/ FastAPI-Anwendung, Modelle, Services, Alembic-Migrationen, Tests
frontend/ React-Oberfläche (Vite)
docs/ Betriebs- und Runner-Dokumentation
.gitea/ Gitea-Actions-Workflows
Lizenz
Languages
Python
56.4%
TypeScript
41.9%
Dockerfile
0.5%
JavaScript
0.3%
Makefile
0.3%
Other
0.5%