Ausgangslage
Der Projektentwickler baut drei Cottage-Projekte in der Region Lwiw. Ein Teil der Kosten betrifft ein einzelnes Haus, ein anderer, etwa Material oder Arbeiten für mehrere Grundstücke zugleich, wird in unterschiedlichen Anteilen auf die Häuser verteilt. In Tabellen wird eine solche Verteilung schnell unübersichtlich, und die Herstellungskosten jedes Hauses müssen manuell berechnet werden.
Hinzu kommen weitere Schwierigkeiten:
- Ausgaben werden in verschiedenen Währungen gebucht, für Berichte wird der Kurs zum Buchungsdatum benötigt;
- Rechnungen und Belege sammeln sich als Fotos und Dateien, die manuell erfasst werden müssen;
- ein Teil der Daten liegt bereits in Excel oder CSV vor und muss verlustfrei übernommen werden;
- neben dem Bau müssen auch Verkauf und Vermietung fertiger Objekte verwaltet werden.
Ein eigenes Thema war die Sicherheit. Es geht um Finanzdaten des Eigentümers, daher sollte der Zugriff nur eingeladenen Personen offenstehen, mit verpflichtender Zwei-Faktor-Authentifizierung und vollständiger Änderungshistorie. Ein einfaches Passwort reicht für ein solches System nicht aus.
Was wir getan haben
Wir haben das System auf Basis von Next.js 16, React 19, Tailwind CSS v4 und Supabase mit Deployment auf Vercel entwickelt. Es umfasst 16 Ansichten und 12 Tabellen in der Datenbank.
Module
- Häuser und Bauphasen;
- Ausgaben mit Verteilung auf mehrere Häuser, wobei die Anteile in Summe 1 ergeben, sodass keine Hrywnja verloren geht oder doppelt gezählt wird;
- Dokumente und Rechnungen mit KI-Erkennung in eine strukturierte Form;
- Import aus Excel und CSV ohne KI, damit die Übernahme alter Daten vorhersehbar bleibt;
- Verkauf und Vermietung;
- Berichte und Benutzerverwaltung.
Währung und Kurs
Jede Ausgabe speichert die Währung, den Buchungskurs und den Kurs der Nationalbank der Ukraine (NBU) zum Datum. So lassen sich Berichte in der gewünschten Währung ohne manuelle Umrechnung erstellen.
Sicherheit
- verpflichtende Zwei-Faktor-Authentifizierung per TOTP, die die Datenbank selbst verlangt: RLS-Richtlinien lassen nur Sitzungen mit der Stufe aal2 zu;
- Änderungsprotokoll über Datenbank-Trigger;
- die anonyme Rolle hat keinerlei Rechte;
- die Selbstregistrierung ist deaktiviert, neue Nutzer kommen nur über einen Einladungslink;
- die Anwendungsserver laufen in derselben Region wie die Datenbank, in Frankfurt.
Das System ist als PWA umgesetzt, sodass es sich auf dem Smartphone installieren lässt und Ausgaben direkt auf der Baustelle erfasst werden können.
Ergebnis
Der Projektentwickler erhielt statt einer Sammlung von Tabellen ein einziges System für alle drei Projekte. Ausgaben, die mehrere Häuser betreffen, werden nach Anteilen verteilt, daher werden die Herstellungskosten jedes Hauses automatisch berechnet.
Was sich geändert hat:
- jede Ausgabe hat Währung, Kurs und NBU-Kurs zum Datum;
- alte Daten aus Excel und CSV werden per Import übernommen;
- Dokumente lassen sich zur KI-Erkennung hochladen, das Ergebnis prüft ein Mensch;
- Verkauf und Vermietung werden im selben System geführt wie der Bau;
- dank PWA lassen sich Ausgaben vom Smartphone aus erfassen.
Ehrlich zur KI: Die Dokumentenerkennung ist umgesetzt, wir behaupten aber nicht, dass sie bereits an einer großen Menge realer Dokumente erprobt wurde. Genau deshalb ist der Import aus Excel und CSV separat und ohne KI umgesetzt.
Was dieses Projekt besonders macht
Die meisten Buchhaltungssysteme schützen Daten mit einem Passwort und eventuell einer Zwei-Faktor-Prüfung auf der Login-Seite. Hier wird die Zwei-Faktor-Authentifizierung auf Datenbankebene verlangt: Ohne bestätigten zweiten Faktor wird eine Datenabfrage schlicht nicht ausgeführt, auch nicht unter Umgehung der Oberfläche. Zusammen mit dem Änderungsprotokoll über Trigger, der deaktivierten Registrierung und Servern in derselben Region wie die Datenbank ergibt das ein Schutzniveau, das Standardlösungen für kleine Unternehmen meist nicht bieten.
Die zweite Besonderheit ist die Verteilung der Kosten auf die Häuser mit der Kontrolle, dass die Anteile in Summe 1 ergeben. Genau an diesem Detail scheitern Tabellen üblicherweise, wenn die Zahlen nicht mehr aufgehen.
Veröffentlicht: · Aktualisiert: