No description
Find a file
fds2610-bot 6851e7d4b3 update.sh: Selbstmodifikation während der Ausführung verhindern
git pull innerhalb des laufenden Skripts konnte die Datei auf der Platte
verändern, während Bash sie noch zeilenweise nachlädt - das führte auf einem
Zielserver zu einer inkonsistenten Mischung aus alter und neuer Ablauflogik
(Tests liefen nach statt vor dem Kopieren, Fehlermeldungen wichen vom
tatsächlichen Skriptinhalt ab). Fix: gesamte Logik in main() gekapselt, das
erst nach vollständigem Einlesen der Datei aufgerufen wird.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 19:16:19 +02:00
html V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
migrations V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
tests V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
.gitignore V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
composer.json V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
composer.lock V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
init.sql new module AKTIEN - see README.md for details V.2.0 2026-02-16 21:04:36 +01:00
LICENSE Initial commit 2026-01-04 14:29:43 +01:00
phpunit.xml V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
README.md V.2.2: Unit-Tests für wichtige Funktionen, automatisch geprüft bei Update 2026-07-23 17:54:30 +02:00
update.sh update.sh: Selbstmodifikation während der Ausführung verhindern 2026-07-23 19:16:19 +02:00
update.sql new module AKTIEN - see README.md for details V.2.0 2026-02-16 21:04:36 +01:00

FSCash

Dokumentiere Ausgaben on-the-go als Webapp & behalte den Überblick über Dein Aktiendepot

ToDo

  • Zusammenfassen von mehreren Einträgen zu einer Aktie
  • Prüfen ob APIKEYS leer sind und ggfs die Aktualisierung ausblenden

V.2.2

  • Unit-Tests (PHPUnit) für die wichtigsten Funktionen, gebündelt in html/lib/fscash.php: Monatsnavigation, Admin-/Aktien-Rollenprüfung, Aktien-GuV-Berechnung, OpenFIGI-/Alpha-Vantage-Antwortauswertung, Eingabevalidierung, CSV-Export und Migrations-Logik (siehe Abschnitt "Tests" unten).
  • update.sh führt die Tests jetzt automatisch vor jedem Deploy aus (inkl. composer install, falls nötig) und bricht bei Fehlschlag ab, bevor irgendetwas kopiert oder migriert wird.

V.2.1

  • update.sh zum Deployen auf einen Zielserver: prüft PHP-Syntax, kopiert den aktuellen git-Stand ins Webroot (ohne die produktive config.php zu überschreiben) und wendet danach ausstehende Datenbank-Migrationen an.
  • neues Verzeichnis migrations/ mit versioniertem Migrationssystem: nummerierte .sql-Dateien werden über eine schema_migrations-Tabelle nachverfolgt und jeweils nur einmal angewendet (siehe migrations/README.md für die Konvention).

V.2.0

  • neue Haupt-Funktion: Aktien zeigt eine Liste mit gespeicherten, zu beobachtenden Aktien
  • Die Tabelle errechnet automatisch den aktuellen Gewinn oder Verluststand jeder Aktieneintragung
  • neue Aktie hinzufügen mit Kaufdatum und Kaufpreis, wird je Benutzer separat hinterlegt (user_id)
  • es KANN eine ISIN oder WKN eingetragen werden
  • Beim Abruf von aktuellen Kursdaten muss vorher ein API Key von https://www.alphavantage.co/support/#api-key beantragt werden.
  • Suchen von Symbolen passend zur ISIN geht über einen API Key von https://www.openfigi.com/user/signup
  • Alternativ kann auch nach dem Aktiennamen bei alphavantage gesucht werden - dafür muss man auf den Namen klicken
  • Aktien können geändert und gelöscht werden.

V.1.2

  • Einträge löschen als Button im Editier-Fenster (UX dient der Prävention versehentlichen löschens auf der Startseite)

V.1.1

Admin-Funktion:

  • in der config.php kann vorkonfiguriert werden, welchen User_ids erlaubt ist, weitere User anzulegen.

Auswertungen:

  • CSV Export des ausgewählten Monats in der Kategorieübersicht
  • Monatssumme je Kategorie
    • Filter monatsweise
    • monate durchblättern zurück und vor, defaut aktueller Monat
  • Monatssumme je Person
    • Haken, welche Kategorieen eingeschlossen werden
    • Filter monatssummen
    • monate durchblättern zurück und vor, defaut aktueller Monat

V.1.0

Das erste Release enthält:

  • mariadb setup
  • apache2 setup
  • Auswahl des UI frameworks
  • login
  • Anzeige bestehender Ausgaben des aktuellen Monats
  • "+" Button zum Aufruf der Eingabemaske
  • Eingabemaske für Ausgaben
  • Speichern der Ausgaben in mariadb

Eingabe:

  • Betrag
  • Personn derzeit individuell direkt über die Mariadb Tabelle individualiserbar
  • für wen (Person1, Person2) jeweils mit Haken
  • Kategorie, derzeit individuell direkt über die Mariadb Tabelle individualiserbar
    • Einkaufen
    • Essengehen
    • Freizeit
    • PuFra
    • Urlaub gemeinsam
    • Urlaub Pössi
    • Barausgaben
  • Datum ohne Uhrzeit, default heute, wählbar via Picker
  • Zahlungsmittel, derzeit individuell direkt über die Mariadb Tabelle individualiserbar
    • Bar
    • Karte
    • Paypal
  • nicht löschbar!
  • alles MUSS-Felder

Ausgabe

  • Anzeige aller Ausgaben des aktuellen Monats
  • "+" Symbol für neue Ausgabe

Weiteres

  • Login/User aktiv halten
  • Datenspeicher MariaDB
  • Strato-Server
  • Kategorieanzeige in Übersicht durch Strings ersetzen
  • Übersicht rückwärts sortiert neu -> alt
  • Betrag deutsche Zahlen und rechtsbündig
  • Kommentarfeld freitext drei Zeilen

Installationshinweise:

  1. webserver & DB server aufsetzen
  2. init.sql script als berechtigter DB user laufen lassen (meist root), der Datenbanken anlegen und Berechtigungen setzen kann.
  3. html Ordner ins webroot kopieren
  4. config_sample.php in config.php umbenennen und DB credentials setzen
  5. webroot (z.B. http://localhost/) aufrufen und mit user test / test123 einloggen.
  6. obige Schritte sind nur das Nötigste, um die Funktionalität herzustellen. Insbesondere bei Zugriffsmöglichkeiten aus dem Internet ist es wichtig, https Protokolle, vpns und/oder ggfs zusätzliche Sicherungsmassnahmen (hardening) zu ergreifen.

Ausserdem solltet Ihr User registrieren und ggfs. die Kategorien anpassen.

Das sollte alles sein. Bitte erstellt ein Bug-Ticket, wenn ich etwas übersehen habe. Gerne könnt Ihr auch Pull-Requests erstellen.

Tests

Die wichtigsten, DB- und netzwerkfreien Funktionen liegen gebündelt in html/lib/fscash.php (Monatsnavigation, Rollenprüfung, Aktien-GuV-Berechnung, Auswertung der OpenFIGI-/Alpha-Vantage-Antworten, Eingabevalidierung, CSV-Export, Migrations-Logik) und werden über PHPUnit in tests/FscashTest.php geprüft.

Einmalig Abhängigkeiten installieren:

composer install

Tests lokal ausführen:

bash tests/run.sh

update.sh führt diesen Schritt automatisch vor jedem Deploy aus (inkl. composer install, falls vendor/ noch fehlt) und bricht bei einem Testfehlschlag ab, bevor irgendetwas kopiert oder migriert wird.