100 lines
3.0 KiB
Markdown
100 lines
3.0 KiB
Markdown
# FixFin
|
|
|
|
Kleine responsive Webapp für **monatliche Fixplanung ohne Buchungsverlauf und ohne Kontostände**.
|
|
|
|
## Datenmodell
|
|
|
|
- Konten: nur Name / Zuordnung
|
|
- fixe Eingänge: Bezeichnung, Betrag pro Monat, Konto
|
|
- fixe Ausgänge: Bezeichnung, Betrag pro Monat, Konto
|
|
- fixe Transfers: Bezeichnung, Betrag pro Monat, Quellkonto, Zielkonto
|
|
- kein Datum
|
|
- keine einmaligen Buchungen
|
|
- keine Datenbank
|
|
- Speicherung ausschließlich in `finance.json`
|
|
|
|
### Berechnung
|
|
|
|
Je Konto:
|
|
|
|
`Eingänge - Ausgänge + Transfers rein - Transfers raus = monatlicher Kontosaldo`
|
|
|
|
Gesamt:
|
|
|
|
`alle Eingänge - alle Ausgänge = monatlicher Gesamtsaldo`
|
|
|
|
Interne Transfers verändern den Gesamtsaldo nicht.
|
|
|
|
## Lokal starten
|
|
|
|
```bash
|
|
chmod +x start-local.sh
|
|
./start-local.sh
|
|
```
|
|
|
|
Die App läuft standardmäßig auf `http://127.0.0.1:3000` und speichert lokal in `.local-data/finance.json`.
|
|
|
|
## Docker-Server
|
|
|
|
Persistente Daten:
|
|
|
|
`/srv/docker/fixfin/data/finance.json`
|
|
|
|
Compose / Anwendung:
|
|
|
|
`/opt/docker-infra/fixfin`
|
|
|
|
Installation:
|
|
|
|
```bash
|
|
sudo chmod +x install.sh
|
|
sudo ./install.sh
|
|
```
|
|
|
|
Danach: `http://DOCKER-SERVER-IP:3080`
|
|
|
|
## Build + Push in Gitea Container Registry
|
|
|
|
Vor dem ersten Push:
|
|
|
|
```bash
|
|
sudo docker login git.example.de
|
|
```
|
|
|
|
Dann:
|
|
|
|
```bash
|
|
sudo ./build-and-push-gitea.sh git.example.de owner/fixfin latest
|
|
```
|
|
|
|
Das Image wird als `git.example.de/owner/fixfin:latest` gepusht.
|
|
|
|
Standardplattform ist `linux/amd64`. Abweichend z. B.:
|
|
|
|
```bash
|
|
sudo PLATFORM=linux/arm64 ./build-and-push-gitea.sh git.example.de owner/fixfin latest
|
|
```
|
|
|
|
## Registry-Image deployen
|
|
|
|
```bash
|
|
cd /opt/docker-infra/fixfin
|
|
sudo FIXFIN_IMAGE=git.example.de/owner/fixfin:latest docker compose -f docker-compose.registry.yml up -d
|
|
```
|
|
|
|
## JSON-Migration
|
|
|
|
Alte FixFin-v1-Dateien mit `balance` in Konten werden automatisch auf v2 migriert. Die alten Kontostände werden entfernt; Eingänge, Ausgänge und Transfers bleiben erhalten. Vor dem Umschreiben wird `finance.json.bak` angelegt.
|
|
|
|
## Periodische Fixkosten und Jahresprognose (v1.2)
|
|
|
|
Eingänge, Ausgänge und Transfers unterstützen `monthly`, `quarterly`, `semiannual` und `yearly`.
|
|
Der eingegebene Betrag ist immer der Betrag pro Intervall. Für Salden kann FixFin periodische Werte automatisch auf einen Monatsdurchschnitt umrechnen. Diese Berücksichtigung lässt sich global in der Übersicht ein-/ausschalten.
|
|
|
|
Für nicht-monatliche Positionen kann optional ein Fälligkeitsmonat angegeben werden. Bei vierteljährlichen und halbjährlichen Positionen ist dies der erste Fälligkeitsmonat. Die Jahresansicht verteilt die Position anschließend auf die tatsächlichen Fälligkeitsmonate. Positionen ohne Monat bleiben für die Monatsdurchschnittsrechnung nutzbar, werden in der Jahresprognose aber separat als nicht zugeordnet angezeigt.
|
|
|
|
|
|
## Jahresansicht auf Mobilgeräten
|
|
|
|
Die Jahresprognose verwendet kompakte Monats-Akkordeons. Monat, Eingänge, Ausgänge und Saldo sind immer sichtbar. Fällige Einzelpositionen werden erst beim Aufklappen angezeigt. Die mobile Bottom-Navigation bleibt auf allen Ansichten identisch.
|