Was sich nach dem Launch verändert hat
Der Monatsabschluss sank bei den Pilot-Agenturen von zwei Tagen auf unter eine Stunde.
- Next.js
- TypeScript
- PostgreSQL
- tRPC
- Playwright
Kennzahlen
- Lighthouse
- 98
- Ladezeit
- −60 %
- Aktive Nutzer
- 2.000
Dashboard
Ein Finanz-Dashboard für kleine Agenturen, das Rechnungen, Zeiterfassung und Kontoumsätze zu einer laufend aktuellen Liquiditätsübersicht zusammenführt.

Die befragten Agenturen führten Rechnungen, Zeiterfassung und Kontoexporte in drei verschiedenen Tools. Der Monatsabschluss kostete zwei Tage Tabellenarbeit und war schon veraltet, als er fertig war.
Das neue Produkt sollte alle drei Quellen importieren, automatisch abgleichen und auch auf den einfachen Laptops schnell bleiben, die die meisten Account-Managerinnen nutzen.
So entstand es
Sechs Phasen vom ersten Gespräch bis zum Release. Der Balken zeigt, wie sich die Zeit verteilt hat.
Gespräche mit Agenturinhabern und ein Blick in ihre Monatsabschluss-Tabellen zeigten, wohin die zwei Tage verschwanden.
Datenmodell, Rendering-Strategie und API-Verträge standen fest, bevor der erste Screen entstand.
Ein Komponenteninventar und responsive Layouts, vollständig aus Design-Tokens aufgebaut.
Funktionen gingen in kleinen Schritten hinter Feature-Flags live, mit typisierten Grenzen zwischen Client und Server.
Unit-, End-to-End- und Barrierefreiheitstests liefen bei jedem Pull Request.
Jeder Branch bekam eine Vorschau-Umgebung; der Rollout in die Produktion war ein Klick.
Der Monatsabschluss sank bei den Pilot-Agenturen von zwei Tagen auf unter eine Stunde.
Wirkung

Der Monatsabschluss sank bei den Pilot-Agenturen von zwei Tagen auf unter eine Stunde.
Kennzahlen
Jeder Bericht wird auf dem Server aus materialisierten Views gerendert, sodass das erste Bild nie auf Client-JavaScript wartet. Nur Filter, Datumsauswahl und die Inline-Editoren werden hydriert.
Die Abgleich-Engine läuft als Queue-Worker. Sie bewertet mögliche Zuordnungen nach Betrag, Datumsabstand und Ähnlichkeit des Verwendungszwecks und fragt nur dann einen Menschen, wenn zwei Kandidaten weniger als fünf Punkte auseinanderliegen.
export function score(tx: Tx, inv: Invoice) {
const amount = tx.amount === inv.total ? 50 : 0;
const days = Math.abs(daysBetween(tx.date, inv.due));
const date = Math.max(0, 30 - days);
const ref = similarity(tx.reference, inv.number) * 20;
return amount + date + ref;
}Architektur
React Server Components rendern jeden Bericht; Client-Inseln übernehmen Filter und Inline-Bearbeitung mit optimistischen Updates.

tRPC-Prozeduren auf PostgreSQL mit Row-Level-Security. Materialisierte Views werden nach jedem Import aktualisiert.

Jeder Pull Request bekommt einen eigenen Datenbank-Branch und eine Vorschau-URL; Produktions-Deployments sind atomar und umkehrbar.

Nächstes Projekt
Weiter stöbern