Die Anwendung "Splitter" ist eine Softwarelösung, die entwickelt wurde, um gemeinsame Ausgaben zwischen Gruppen von Menschen gerecht aufzuteilen und transparent darzustellen. Sie ermöglicht es Benutzern, Gruppen zu erstellen und Mitglieder über ihren GitHub-Namen hinzuzufügen. Innerhalb dieser Gruppen können die Benutzer Ausgaben erfassen, die von der gesamten Gruppe oder von einzelnen Mitgliedern getätigt wurden.
Die Anwendung verwendet folgenden Technologie-Stack:
-
Backend-Framework: Die Anwendung wird mithilfe von Spring Boot entwickelt, um eine robuste und effiziente Backend-Logik zu implementieren.
-
Datenbank: PostgreSQL wird als Datenbank verwendet, wobei die Datenbank in einem Docker-Container betrieben wird. Dies ermöglicht die sichere und effiziente Speicherung von Informationen über Gruppen, Mitglieder, Ausgaben und Transaktionen.
-
Datenbank-Tests: Zur Sicherstellung der Datenbankfunktionalität werden Tests mit H2 durchgeführt, sodass sie auch ohne Docker-Container ausgeführt werden können.
-
Authentifizierung: GitHub wird als OAuth-Provider für die Benutzerauthentifizierung verwendet, um sicherzustellen, dass nur autorisierte Benutzer auf die Anwendung zugreifen können.
-
Architektur: Die Anwendung folgt der Onion-Architektur und verwendet taktische Domain-Driven-Design (DDD)-Muster, um eine klare und gut strukturierte Architektur zu gewährleisten.
Splitter bietet den Nutzern eine Übersicht über alle Gruppen, denen sie angehören. In der Detailansicht einer Gruppe werden alle getätigten Ausgaben und die beteiligten Personen angezeigt. Dabei werden Ausgaben, die den aktuellen Benutzer betreffen, hervorgehoben. Die Anwendung berechnet auch automatisch die notwendigen Transaktionen zwischen den Gruppenmitgliedern, um die Auslagen auszugleichen.
Zu einem bestimmten Zeitpunkt können Gruppen geschlossen werden, was bedeutet, dass keine weiteren Ausgaben erfasst werden können, aber die Details der Gruppe immer noch sichtbar sind.
Insgesamt erleichtert "Splitter" die Organisation und Abrechnung gemeinsamer Ausgaben in verschiedenen Gruppenszenarien wie Wohngemeinschaften oder Reisegruppen.
Zum Starten wird eine CLIENT_ID und ein CLIENT_SECRET gebraucht, außerdem wird ein JDBC_USER und ein JDBC_PASS gebraucht.
Das Programm kann durch folgenden Befehl gestartet werden:
gradle bootRun --args="--CLIENT_ID={client id} --CLIENT_SECRET={client secret} --JDBC_USER={username} --JDBC_PASS={password}"
Nach dem Starten des Programms befindet man sich auf der Log-in Seite,nach Anmeldung mit dem GitHub Account wird man, auf die Main Seite weitergeleitet. Auf dieser erstellt man Gruppen, indem man in das Textfeld eine Gruppenbeschreibung eingibt, daraufhin wird die Gruppe als offene Gruppe angezeigt. Beim Klicken auf die Gruppenbeschreibung landet man in der Detailansicht der Gruppe. Ganz oben befindet sich ein Button zum Schließen (Gruppe bleibt existent, aber keine Aktionen mehr möglich) der Gruppe und ein Link, mit dem man wieder zur Übersicht gelangt.
Darunter kann man Mitglieder hinzufügen, indem man in das dazugehörige Feld ihren Namen eingibt. Nach dem Hinzufügen können Mitglieder durch das klicken das Kreuz neben dem Namen entfernt werden.
Als Nächstes folgt das Formular zum Hinzufügen von Ausgaben. Nachdem die Felder "Verwendungszweck", "Betrag" und "Ausgelegt von" ausgefüllt wurden, wählt man darunter durch Anklicken der Namen die Begünstigten, daraufhin klickt man den Button "Hinzufügen" und eine Tabelle mit den Ausgaben wird angezeigt.
Nach dem Hinzufügen einer Ausgabe kann man keine Person mehr der Gruppe hinzufügen oder entfernen.
Sobald man den Button "Ausgleichen" drückt, wird eine Tabelle angezeigt, in der man sieht, wer wem wie viel Geld schuldet.
Wenn die Gruppe nicht mehr gebraucht wird, kann sie durch die Buttons oben geschlossen werden. Die Gruppe wird dann auf der Übersichtsseite unter geschlossene Gruppen angezeigt und kann auch noch durch Klicken des Namens betrachtet werden.