Der Server ist in TypeScript geschrieben und läuft auf Bun. Daraus kompilieren wir ein einzelnes, eigenständiges live-Binary, das ohne externe Laufzeitumgebung startet.
Als Dokumentstore verwenden wir CouchDB. Geschäftsvorfälle werden als Dokumente abgelegt; daraus leitet der Server intern eine Leseseite (CQRS-Read-Model) ab, die wir als schnellen Cache für Abfragen nutzen. So bleibt die Schreibseite schlank und nachvollziehbar, während Listen und Auswertungen flott bleiben.
Viele Ideen über die Bedienung auf der Kommandozeile haben wir aus unserer langjährigen Erfahrung im Cloud Umfeld bezogen: die Arbeit mit Docker, Kubernetes und ähnlichen Tools zeigt, wie man auch bei komplexen technischen Werkzeugen eine für den Administrator angenehme CLI schaffen kann. Von diesen Tools haben wir auch die Ideen für das Rechte- und Rollenkonzept übernommen. Das macht sich positiv im Betrieb bemerkbar: Administratoren, die diese Cloud Werkzeuge gewohnt sind, kommen ohne großen Lernaufwand mit unseren Applikationen klar. Inkasso.live fügt sich nahtlos in eine Cloud-Native Infrastruktur ein.
Der Client basiert ebenfalls auf TypeScript. Als UI Framework verwenden wir Quasar. Das ist eine Erweiterung von Vue und liefert die Basisinfrastruktur für die visuellen Komponenten.
Der Client ist eine PWA (Progressive Web App auf Basis HTML5 / CSS3) und benötigt somit einen Service Worker. Quasar liefert hier im Standard Workbox aus, welches sich als sehr zuverlässig erwiesen hat. Eine vormals eigene Implementierung haben wir während der Alpha Phase inzwischen vollständig ersetzt. Workbox bringt die Offline Funktionalität der App. Die Offline Funktionalität der Daten ist eine Eigenentwicklung: Aufträge werden lokal in IndexedDB vorgehalten und bei Verbindung wieder mit dem Server synchronisiert. So lässt sich auch ohne Netz weiterarbeiten.
Für die Authentifizierung wird WebAuthn verwendet, welches inzwischen von allen gängigen Browsern unterstützt wird. Somit erreichen wir eine breite Abdeckung an unterstützten Endgeräten.