Zum Hauptinhalt springen
daagwerk

Struktur & Freiheit

Das ist daagwerk.

Sechsundfünfzig Funktionen. Ein Ziel: Zeiterfassung soll sich anfühlen wie ein Handgriff, nicht wie ein Formular. Wir haben sie in drei Stufen sortiert — vom täglichen Handwerk über das wirtschaftliche Schutzschild bis zum unsichtbaren Fundament. Wer sucht, tippt oben ins Feld.

Stufe 1

Das tägliche Handwerk

Für jeden, der Zeiten erfasst.

Diese Features verwandeln die tägliche Zeiterfassung von einer lästigen Pflicht in einen flüssigen, reibungslosen Workflow. Alles, was hier steht, berührt dich jeden Tag — meistens ohne dass du drüber nachdenken musst.

Erst: das mentale Modell

Die dreistufige Standard-Hierarchie

Strukturierung von Aufwänden über Accounts, Projekte und Jobs.

Das Kernkonzept zur Organisation von Zeiten basiert auf der Kaskade Account → Project → Job. Ein Account repräsentiert den Auftraggeber, Kunden oder eine interne Abteilung, während ein Project das konkrete Vorhaben bündelt. Der Job definiert schließlich die exakte, buchbare Tätigkeit. Diese Struktur ist flexibel genug, um die Arbeitsweisen von Agenturen, Beratungen, Konzernen oder Handwerkern gleichermaßen abzubilden.

Blitzschneller Einstieg

Intelligente globale Volltext-Suche

Übergreifende Echtzeitsuche nach Accounts, Projekten und Jobs.

Über die Tastatur-Shortcuts ⌘K (Mac) oder Ctrl+K (Win) lässt sich von überall eine fehlertolerante Token-Suche aktivieren. Das System durchsucht alle Ebenen gleichzeitig, sodass beispielsweise die Eingabe von drei Buchstaben genügt, um die exakte Aufgabe zu finden. Gefundene Suchbegriffe werden visuell hervorgehoben, und ein Druck auf Enter startet den Timer sofort.

Quick-Start via Direkt-Play-Buttons

Timer-Start mit einem Klick direkt aus Arbeitslisten.

In der Account-Übersicht sowie in allen Projekttabellen ist jeder aktiven Aufgabe ein kleiner, lime-grüner Play-Button vorangestellt. Ein Klick darauf startet die Zeitmessung für diesen spezifischen Job ohne den Umweg über Suchfelder oder Modals. Ist der Job inaktiv oder läuft bereits ein Timer auf dieser Position, blockiert das System die Aktion und gibt eine entsprechende Warnung aus.

Persönliche & Enterprise-Favoriten

Schnelles Pinnen häufig genutzter Account-Job-Kombinationen.

Anwender können oft genutzte Kombinationen als persönliche Favoriten speichern, um sie mit einem einzigen Tap im Erfassungs-Tab aufzurufen. Für unternehmensweite Standards — wie allgemeines Projektmanagement oder interne Verwaltung — können Manager via company_favorites tenant-weite Favoriten definieren. Diese werden farblich abgegrenzt und stehen dem gesamten Team zur Verfügung.

Dynamische „Letzte Jobs"-Liste

Automatisches Protokollieren der zuletzt genutzten Aufgaben.

Unterhalb der Favoriten listet die Software automatisch die letzten distinkten Jobs auf, auf die der Anwender Zeit gebucht hat. Das Limit dieser Sektion ist im Nutzerprofil flexibel zwischen 0 und 25 Einträgen konfigurierbar. Nach jedem Timer-Stopp aktualisiert sich diese Liste in Echtzeit, um repetitive Klicks zu minimieren.

Fokus im Chaos

Schnellstart-Timer & Private Inbox

Sofortiges Starten einer Zeitmessung ohne direkte Klassifizierung.

Über einen prominenten, bernsteinfarbenen Blitz-Button in der Sidebar können Nutzer einen unklassifizierten Blanko-Timer mit einer optionalen Freitext-Notiz starten. Nach dem Stoppen landet diese Buchung in einer privaten Inbox, die aus DSGVO-Gründen selbst für Manager unsichtbar bleibt. Erst im Nachgang wird der Eintrag über das AssignJobModal mit einem echten Job verknüpft, wodurch Rundungen und Budgets nachberechnet werden.

Unbegrenzte parallele Multi-Timer

Gleichzeitiges Laufenlassen mehrerer Zeitstempel pro Nutzer.

Das System erlaubt es jedem Anwender, beliebig viele Timer parallel aktiv zu haben. Dies fängt den realen Agenturalltag ab, in dem Meetings, unvorhergesehene Telefonate und parallele Sprints ineinandergreifen. Die Timer laufen serverseitig sauber getrennt nach Job und Projekt weiter, ohne dass sich der Nutzer ausloggen oder Daten manuell splitten muss.

Nachtragen ohne Reibung

Vollständig manuelle Buchungen (Von—Bis)

Nachträgliche Zeiterfassung für Offline-Zeiten oder Termine.

Wer Zeiten im Nachgang erfassen muss, nutzt das NewBookingModal in der Sidebar. Es erlaubt die manuelle Eingabe von Start- und Endzeiten oder harten Laufzeiten. Das Formular verfügt über eine Echtzeit-Validierung, die das Speichern bei unlogischen Eingaben (Ende vor Start) blockiert, und triggert nach dem Sichern sofort die automatische Mitternachtstrennung.

Automatischer Ende-Datum-Sync

Intelligente Datumsanpassung bei manuellen Buchungen.

Wenn ein Anwender im erweiterten Bearbeitungsmodus das Startdatum einer Buchung ändert, zieht das System das Enddatum automatisch mit. Dieser Helper greift bewusst nur bei Eintages-Buchungen, um komplexe Mehrtagesbuchungen nicht zu beschädigen. Er verhindert, dass durch ein Versehen unbemerkt ungültige Zeiträume entstehen.

Tippoptimierte DateTime-Eingabe („Harvest-Stil")

Tastaturfreundliche Zeiteingabe ohne blockierende Overlays.

Um schnelles Tippen ohne Mauszwang zu ermöglichen, öffnen sich die Kalender-Popups der Datumsfelder nicht mehr automatisch bei Fokus. Das direkte Tippen im Eingabefeld bleibt permanent aktiv. Der grafische Kalender (flatpickr) öffnet sich stattdessen nur noch gezielt bei einem Klick auf das dedizierte Icon rechts im Feld.

Textbausteine & Notizvorlagen

Hinterlegen von wiederkehrenden Texten für Buchungskommentare.

Um Tipparbeit bei standardisierten Aufgaben zu minimieren, bietet daagwerk ein Vorlagensystem für Buchungsnotizen. Diese Textbausteine können global für den gesamten Tenant, spezifisch für einen Account oder direkt für einen einzelnen Job definiert werden. Beim Erfassen oder Bearbeiten einer Zeit steht dem Nutzer ein Dropdown zur Verfügung, das den gewählten Text fehlerfrei einfügt.

Automatische Mitternachtstrennung (Cross-Day-Split)

Automatisches Aufteilen von Buchungen, die über Mitternacht laufen.

Läuft ein Timer oder eine manuelle Buchung über die Mitternachtsgrenze der Mandanten-Zeitzone hinaus, zerlegt das Backend den Zeitraum automatisch in tageweise Segmente. Jedes Segment wird als eigenständiger time_entry gespeichert. Pro Tag werden die Rundungsregeln und Budgetprüfungen separat ausgeführt, was unrealistische Auslastungsspitzen im System verhindert.

Persönliche Balance

Persönliche Arbeitszeit-Modelle

Hinterlegung von individuellen Wochenstunden und Arbeitstagen.

Jeder Anwender kann in seinem Profil sein exaktes Beschäftigungsverhältnis definieren. Neben den vertraglichen Wochenstunden lässt sich über sieben dedizierte Workday-Pills exakt festlegen, an welchen Wochentagen (Mo–So) die Arbeitsleistung erbracht werden muss. Das System berechnet daraus das tägliche Soll-Target.

Dynamischer Soll-Ist-Abgleich (Woche/Monat/Jahr)

Grafische Visualisierung des persönlichen Arbeitspensums.

Im Auslastungs-Tab werden die tatsächlich erfassten Arbeitszeiten (IST) in Echtzeit gegen das berechnete SOLL-Modell gespiegelt. Die Anzeige lässt sich flexibel zwischen Wochen-, Monats- und Jahresansichten umschalten, wobei das System die Y-Achse der Balkencharts automatisch skaliert. Eine Überbuchung wird über anpassbare Farbcodes und einen oberen Edge-Indikator signalisiert.

Integrierter Abwesenheits-Tracker

Erfassung und dynamische Einrechnung von Ausfallzeiten.

Nutzer können Abwesenheiten wie Urlaub (vacation), Freizeitausgleich (comp_time) oder Krankheit (sick) direkt erfassen. Das Formular erlaubt die Unterscheidung zwischen ganzen und halben Tagen, wobei halbe Tage das Soll des Tages exakt um die Hälfte reduzieren. Im Auslastungs-Tab werden diese Phasen mit passenden i18n-Labels (z. B. Urlaub (½)) direkt unter dem Datum eingeblendet.

Lokalisierte Feiertags-Engine

Automatische Soll-Reduzierung an gesetzlichen Feiertagen.

Das Backend verfügt über eine integrierte In-Memory-Feiertagsberechnung für Deutschland. Basierend auf der Gaußschen Osterformel werden alle beweglichen und festen Feiertage berechnet. Abhängig vom im Nutzerprofil hinterlegten Bundesland wird das Arbeits-Soll an Feiertagen automatisch auf null gesetzt und der Tag im Chart im grauen Frei-Tag-Look gerendert.

Nahtlose Mobilität

Responsive Web-Applikation

Moderner, hochperformanter Browser-Client für alle Endgeräte.

Die primäre Web-Oberfläche basiert auf einem schnellen React- und Vite-Stack. Sie ist vollständig responsive für Desktop, Notebook und Tablet optimiert und unterstützt eine flotte, mausfreie Navigation. Ein nativer, manuell umschaltbarer Dark Mode greift auf System-Präferenzen zu und passt alle UI-Komponenten (inklusive des Datepickers) kontrastreich an.

Native iOS SwiftUI-App

Vollwertiger mobiler Client für das iPhone.

Die iOS-App ist als vollständig native SwiftUI-App in Swift 6 geschrieben. Sie spiegelt die Kernfunktionalitäten des Webs: Mobile Nutzer können Timer via Volltextsuche starten, das NewBookingSheet für manuelle Von—Bis-Einträge nutzen oder über die Sektion „Letzte Jobs" Schnellstarts ausführen. Ein lila PO-Badge unter den Projektzeilen signalisiert zudem direkt die Budgetzugehörigkeit.

Native watchOS-App mit Complications

Zeiterfassung und Timer-Steuerung direkt vom Handgelenk.

Die Apple-Watch-App ermöglicht das autarke Verwalten laufender Timer ohne Griff zum Smartphone. Sie unterstützt native Complications in allen gängigen Formaten (Circular, Rectangular, Corner, Inline), um die aktuelle Projektzeit direkt auf dem Zifferblatt anzuzeigen. Der Token- und Datenabgleich erfolgt verschlüsselt über das WatchConnectivity-Framework.

Native macOS Menubar-App

Eigenständiger Desktop-Client mit schnellem Menüleisten-Zugriff.

Die macOS-App läuft als eigenständige Menubar-Anwendung im Apple-Ökosystem. Das unaufdringliche Icon in der Menüleiste zeigt bei aktiven Aufwänden die Live-Zeit oder die Anzahl paralleler Timer an. Über den globalen Hotkey ⌘⇧B lässt sich von überall im Betriebssystem das manuelle Buchungsfenster aufrufen, ohne den Browser öffnen zu müssen.

Und die kleinen Dinge, die den Alltag glätten — kontextuelle Hilfe-Tooltips (HelpIcon) sitzen an den kniffligen Stellen der Oberfläche und erklären komplexe Konzepte wie den Auto-Switch oder die Verhandlungs-Lücke direkt am Ort des Geschehens.

Stufe 2

Das wirtschaftliche Schutzschild

Für Projektleiter und Management.

Hier stehen die Werkzeuge, die dafür sorgen, dass kein Geld verbrannt wird, Budgets halten und die Abrechnung am Monatsende in Minuten steht. Wer mit Kunden verhandelt und Marge verantwortet, verbringt hier die meiste Zeit.

Präzises Datenmodell

Das präzise gebucht/abrechenbar-Modell

Strikte Trennung von tatsächlich geleisteter und fakturierbarer Arbeitszeit.

daagwerk speichert jede Buchung exakt in zwei Dimensionen ab: booked_seconds (die tatsächliche Arbeitszeit) und billable_seconds (die abrechenbare Zeit). Das fehleranfällige Arbeiten mit Prozentwerten wurde eliminiert. In allen Tabellen wird die abrechenbare Zeit in HH:MM dargestellt und erhält sofort eine visuelle Warnfarbe, wenn die fakturierbare Zeit unter die gebuchte Zeit fällt.

Vier granulare Abrechnungstypen pro Aufgabe

Steuerung der Verrechnungsmethode auf Job-Ebene.

Jeder Job ist fest an einen Abrechnungstyp gebunden: stündlich abrechenbar (Verrechnung nach Zeitaufwand), Festpreis (Aufwand dient nur der internen Information, Abrechnung fix), nicht abrechenbar (z. B. interne Admin-Zeiten) oder Pauschale/Fee (recurring_fee). Das Backend erzwingt diese Regeln unerbittlich; bei einem nicht abrechenbaren Job wird billable_seconds beim Insert automatisch auf 0 gesetzt.

Dynamische Stundensatz-Vererbung (Cascade)

Automatische Weitergabe und flexibles Überschreiben von Raten.

Die Berechnung von Beträgen basiert auf einer strengen hierarchischen Kaskade: Tenant → Account → Project → Job. Ein Basis-Stundensatz kann global definiert, jedoch auf jeder tieferen Ebene beliebig oft überschrieben werden. Das System berechnet bei jedem Lesezugriff den effektiv gültigen Satz für die spezifische Buchung.

Wiederkehrende Pauschalen & Umsatz-Resolver

Verwaltung und saubere Auswertung von Retainer-Modellen.

Neben zeitbasierten Aufwänden können über den Typ recurring_fee feste Beträge mit definierten Rhythmen und Laufzeiten hinterlegt werden. Der integrierte Arrangement-Resolver sorgt dafür, dass diese Pauschalen und Festpreise bei Budgetauswertungen als exakte flache Einheiten einfließen. Dadurch werden fehlerhafte Hochrechnungen (wie eine fälschliche Multiplikation von Festpreisen mit Stundensätzen) im Reporting effektiv verhindert.

Vertrags- und Budgettreue

First-Class Purchase Orders (Bestellnummern-Objekte)

Verwaltung von vertraglichen Kunden-Budgets mit harten Limits.

Bestellnummern sind als eigenständige Entitäten tief im System verankert. Sie hängen per XOR-Constraint entweder an einem Projekt oder direkt an einem Job, wobei pro Träger exakt eine PO aktiv sein kann. Eine PO verwaltet Laufzeiten, Beschaffungsbudgets (in Stunden oder Geld) sowie die dazugehörigen Debitorendaten des Kunden.

Automatisches Auslastungs-Splitting (Budget-Split)

Automatisches Teilen von Zeitbuchungen bei Budgetüberschreitung.

Wenn eine Zeitbuchung das verbleibende Restbudget einer aktiven Bestellnummer überschreitet, führt das System eine lineare Interpolation durch. Die Buchung wird exakt an der Budgetgrenze gesplittet. Das erste Segment schöpft die alte PO vollständig aus, während das Restschnitt-Segment automatisch auf eine hinterlegte Nachfolge-PO gebucht oder als verwaister Eintrag im Backfill-Pool abgelegt wird.

Vererbbare Aufrundungsregeln (Rounding)

Automatisches Runden von Zeitbuchungen nach konfigurierbaren Rhythmen.

Auf jeder Ebene der Hierarchie lassen sich Rundungsregeln definieren (none, 5, 10, 15, 30, 60 Minuten). Das System wendet diese Regeln vollautomatisch bei jedem Timer-Stopp, manuellem Eintrag oder CSV-Import an. So kann ein Tenant global minutengenau abrechnen, für einen spezifischen Großkunden jedoch einen 15-Minuten-Takt erzwingen.

Multi-Currency-Unterstützung (Währungen pro Kunde)

Flexible Verwaltung von unterschiedlichen Landeswährungen.

Ab dem Business-Plan erlaubt daagwerk die Pflege von kunden- und account-spezifischen Währungen aus einem Pool von 11 Weltwährungen. Der Umsatz wird pro Mandat in der korrekten Zielwährung erfasst. Bei aggregierten Auswertungen oder im PDF-Export generiert das System eine übersichtliche „Summen pro Währung"-Tabelle, um Wechselkurs-Verfälschungen zu vermeiden.

Wenn's brennt: Kontrolle und Rettung

Automatisierte, protokollierte PO-Ereignisse

Systemd-gesteuerte Überwachung von Budgets und Laufzeiten.

Ein minütlich laufender systemd-Timer prüft im Hintergrund vier kritische Kern-Ereignisse: PO erschöpft, PO läuft ab, Erreichen von Budget-Schwellenwerten (80% / 100%) sowie das Vorhandensein verwaister Buchungen. Um E-Mail-Fluten zu verhindern, wird jedes Ereignis über ein striktes notification_log deduppliziert. Ein erneuter Alarm erfolgt erst, wenn sich der Status maßgeblich ändert.

Interne Account-Rollen & Benachrichtigungs-Routing

Zielgerichtetes Routing von System-Alerts an Projektverantwortliche.

Accounts können mit internen Freitext-Rollen versehen werden, um Zuständigkeiten wie Account Manager, Customer Success oder Kundenkontakt zuzuweisen. Operative Systembenachrichtigungen werden ausschließlich an diese internen Rollen geroutet. Dadurch wird verhindert, dass automatisierte Budget-Warnungen fälschlicherweise an externe Nachweisempfänger oder reine Bucher gesendet werden.

Der PO-Backfill-Wizard

Nachträgliches Zuordnen von offenen Buchungen zu neuen Bestellnummern.

Da in der Praxis neue Bestellnummern oft erst verzögert eintreffen, sammeln sich Buchungen in „Verhandlungs-Lücken" ohne PO-Verknüpfung an. Der zweistufige Backfill-Wizard erlaubt es Managern, einen Zeitraum zu wählen und alle offenen Buchungen gesammelt einer neuen PO zuzuweisen. Eine integrierte Dry-Run-Vorschau zeigt vor dem Schreiben exakt an, wie viele Stunden verschoben werden und ob das Budget dabei überschritten wird.

Visuelle Erkennung verwaister Buchungen (Orphan Tracking)

Deutliche Kennzeichnung von Leistungen, die außerhalb eines Budgets liegen.

Wenn eine Buchung keine purchase_order_id besitzt, der Job oder das Projekt jedoch über historische Bestellnummern verfügt, berechnet das Backend den Status is_orphaned. Im Frontend wird diese Buchung sofort mit einer bernsteinfarbenen „ohne PO"-Pille und einem erklärenden Tooltip markiert. Dies signalisiert dem Management visuell, dass hier Leistungen im vertragslosen Raum erbracht wurden.

Effizienz im Block

Erweiterter Massen-Edit (Bulk-Update)

Gleichzeitiges Ändern hunderter Buchungen in einem Schritt.

Über eine Multi-Select-Toolbar in den Berichten können Manager weitreichende Änderungen im Block durchführen. Ein intelligentes Checkbox-pro-Feld-Pattern sorgt dafür, dass nur explizit angewählte Dimensionen (wie Job-Verschiebung, Notiz-Überschreibung oder Anpassung der Abrechenbarkeit) überschrieben werden. Vor dem endgültigen Speichern sichert das System die Altdaten revisionssicher ab.

Bulk-Datum- und Uhrzeit-Verschiebung

Schnelles Korrigieren von falsch gebuchten Team-Meetings.

Seit Iteration 3 des Bulk-Edits lassen sich auch Kalenderdaten und Uhrzeiten für große Mengen an Buchungen gesammelt anpassen. Das System berechnet die Dauer unter Berücksichtigung der Tenant-Zeitzone und der Rundungsregeln komplett neu. Zeilen, bei denen das neue Ende vor dem Start liegen würde, werden mit einer Fehlermeldung übersprungen.

Schnelle Inline-Bearbeitung

Direktes Editieren von Zeiten in Tabellenzeilen ohne Modals.

Um administrative Arbeit so flüssig wie möglich zu gestalten, verfügen die Zeilen in den Buchungslisten und Berichten über ein integriertes Inline-Editing. Ein Klick auf den schlanken, teal-farbenen Edit-Button verwandelt die Textfelder direkt in Eingabemasken für Von, Bis, Notiz und Abrechenbarkeit. Das Speichern erfolgt blitzschnell via Tastatur, ohne dass Popups den Lesefluss blockieren.

Geplante Buchungen (Forecast)

Erstellung und spätere Aktivierung von Zeithorizonten.

Das System erlaubt es, zukünftige Kapazitäten und geplante Aufwände als Forecast-Buchungen anzulegen. Diese geplanten Zeiten fließen in die zukünftigen Budget-Auslastungen ein, lösen jedoch noch keine echten Abrechnungsbeträge aus. Sobald die Arbeit erledigt ist, können diese Einträge mit einem Klick aktiviert und als reale Buchungen bestätigt werden.

Revisionssicherheit

Der vierstufige Freigabe-Workflow

Lebenszyklus-Steuerung für jede erfasste Zeiteinheit.

Jede Buchung durchläuft die Statusstufen Gebucht → Geprüft → Abgerechnet oder Storniert. Die Stati sind im gesamten System farbcodiert (Teal, Dunkelgrau, Pink). Manager nutzen diesen Workflow, um erfasste Zeiten für die Rechnungsstellung freizugeben, während Admins auch bereits verrechnete Posten im Bedarfsfall korrigieren dürfen.

Rigide Perioden-Sperre

Sperren abgeschlossener Zeiträume gegen nachträgliche Änderungen.

Manager besitzen das Recht, historische Wochen und Monate final abzuschließen. Sobald eine Periode gesperrt ist, blockiert die API jegliche Schreibzugriffe (INSERT, UPDATE, DELETE) für sämtliche Rollen im System. Dies garantiert konsistente Datenbestände für die Finanzbuchhaltung und verhindert, dass bereits exportierte Rechnungsbasen nachträglich verändert werden.

Audit-Trail & Änderungshistorie

Revisionssicheres Protokollieren aller manuellen Datenänderungen.

Bei jedem Schreibzugriff oder Bulk-Update auf eine bestehende Buchung sichert das Backend den exakten vorherigen Zustand als JSONB-Datensatz in der Tabelle time_entry_history. Protokolliert werden die alten Werte für booked_seconds, billable_seconds, Zeitstempel, Notizen und die job_id. Dies sorgt für lückenlose Nachvollziehbarkeit bei Betriebsprüfungen.

Kundenfertige Reports

Premium-PDF-Plattform (Layout 2 Editorial)

Generierung von kundenfertigen Aufwandsnachweisen im Bank-Statement-Stil.

Über eine serverseitige Gotenberg-Pipeline rendert daagwerk hochprofessionelle, mehrseitige PDF-Reports unter Verwendung der typografisch optimierten Schriftart Geist. Das Layout bricht Tabellen sauber um, wiederholt Tabellenköpfe (thead) auf Folgeseiten automatisch und verhindert das unschöne Abschneiden von einzelnen Zeilen. Zahlen werden über Tabular-Nums präzise untereinanderbündig gehalten.

Tenant-Custom-Branding für PDFs

Einbinden von eigenen Logos und Hausfarben in den PDF-Export.

Admins können über den Branding-Reiter im Profil ein eigenes Firmenlogo als base64-Data-URI hochladen und eine Primärfarbe definieren. Das Premium-PDF adaptiert diese Daten vollautomatisch: Die definierte Primärfarbe überschreibt die Akzente (--primary), das Logo wird im Header platziert und der Briefkopf sowie der seitenweise Footer werden entsprechend gebrandet.

Performance-Filterzeile mit gespeicherten Sichten

Filtern großer Buchungsmengen mit benutzerspezifischen Voreinstellungen.

Die Berichte erlauben das Filtern nach Accounts, Projekten, Jobs, Anwendern, Abrechnungstypen, Status und Freitext-Notizen über unbegrenzte Zeiträume. Die Filtereinstellungen werden über ein JSONB-Feld persistent in den User-Preferences gespeichert. Dadurch bleibt die gewählte Tabellenkonfiguration auch nach dem Verlassen der Seite oder einem Reload vollständig erhalten.

Tri-State Tabellenspalten-Steuerung

Flexibles Ein- und Ausblenden von Informationsspalten.

Tabellen wie die Buchungsliste verfügen über eine Säulen-Steuerung via Dropdown. Für komplexe Spalten wie die Bestellnummer lässt sich ein Tri-State-Modus definieren (Dynamisch / Immer an / Aus). Im Modus „Dynamisch" prüft das Backend selbstständig, ob in der gefilterten Menge überhaupt Daten für diese Spalte existieren, und blendet die Spalte flackerfrei aus, falls das Feature nicht genutzt wird.

Strukturierter Multi-Format-Datenexport

Bereitstellung von Zeitdaten in gängigen maschinenlesbaren Formaten.

Für die Weiterverarbeitung in externen ERP-, Buchhaltungs- oder BI-Systemen stellt daagwerk alle Reports auf Knopfdruck in vier Standardformaten bereit: CSV (mit BOM für Excel-Kompatibilität), JSON, XML und als reinen PDF-Report. Die Exporte sind vollkommen deckungsgleich mit den im UI gesetzten Filtern.

Massen-Export als ZIP-Archiv (Bulk-PDF)

Gesammelter Rechnungs-Download für alle Kunden im Block.

Für den monatlichen Abrechnungszyklus können Nutzer im Business-Plan über die Route /export/entries-bulk.zip einen gesammelten ZIP-Stream anfordern. Das System generiert im Hintergrund für jeden aktiven Account ein separates, gefiltertes Premium-PDF und packt diese strukturiert in ein einziges Archiv. Die Umsatztabellen sind dabei über ein Role-Gating geschützt und nur für Manager einsehbar.

Stufe 3

Das unsichtbare Fundament

Für Admin, IT und Compliance.

Diese Features verkaufen das Produkt auf der Entscheider-Ebene. Sie nehmen der IT, dem Einkauf und dem Datenschutzbeauftragten alle Bedenken — und du siehst sie im Alltag fast nie.

Datensicherheit

Datenisolation über PostgreSQL Row-Level-Security

Strikt isolierte Datenräume auf Datenbankebene für maximale Sicherheit.

daagwerk ist von Grund auf als echte Multi-Tenant-Plattform konzipiert. Die Trennung der einzelnen Mandanten (Tenants) erfolgt nicht rein kosmetisch im Code, sondern wird durch PostgreSQL Row-Level-Security direkt auf der Datenbankebene erzwungen. Kein Nutzer kann jemals Daten eines anderen Mandanten einsehen oder manipulieren, da jeder API-Request zwingend mit der verifizierten tenant_id aus dem JWT-Sicherheitstoken validiert wird.

Granulares Rollen- und Rechtesystem

Vier Sicherheitsstufen zur Steuerung von Systemberechtigungen.

Das System differenziert strikt zwischen den Rollen Bucher (darf nur eigene Zeiten erfassen/sehen), Manager (darf Budgets verwalten, Raten einsehen, Perioden sperren und teamweite Berichte ziehen), Admin (vollständige Tenant-Konfiguration) und Super-Admin (übergreifende Mandantenverwaltung). Die Prüfung dieser Rechte erfolgt restriktiv auf API-Ebene bei jedem einzelnen Request.

Integrierte SMTP-Infrastruktur mit Redis Rate-Limiting

Sicherer Versand von System-E-Mails mit Schutz vor Missbrauch.

Für den Versand von Passwort-Reset-Links und Budget-Benachrichtigungen verfügt daagwerk über eine vollintegrierte SMTP-Pipeline via STARTTLS (Port 587). Um Spam-Angriffe und Server-Blockaden zu verhindern, ist der Versand an eine Redis-basierte Auslastungsprüfung gekoppelt. Sie limitiert Passwort-Anfragen strikt auf maximal drei Requests pro E-Mail-Adresse und Stunde.

Struktur & Migration

Default-Account-Jobs (Projektlose Direktbuchung)

Direktes Buchen von Tätigkeiten auf einen Kunden ohne Projektzwang.

Für langjährige Bestandskunden oder wiederkehrende Support-Mandate ohne klassisches Projektgeschäft können Aufgaben direkt auf Account-Ebene angelegt werden. Das System erzeugt hierfür bei Bedarf im Hintergrund ein unsichtbares Default-Projekt. In Listen und CSV-Exporten werden diese Buchungen einheitlich als (Default) gekennzeichnet, um Excel-Filter nicht zu brechen, während sie im Kunden-PDF für ein sauberes Erscheinungsbild automatisch ausgeblendet werden.

Hierarchie-Verschiebung (Move-Aktionen)

Flexibles Verschieben von Aufgaben zwischen Accounts und Projekten.

Sollte sich die Struktur eines Mandats ändern, bietet daagwerk dedizierte Endpunkte für die Neustrukturierung. Jobs können mitsamt ihren historischen Buchungen über Befehle wie move-to-account oder move-to-project verschoben werden. Vor dem endgültigen Verschieben prüft das Backend automatisch alle vererbten Stundensätze und Rundungsregeln ab, um Berechnungsfehler im System zu verhindern.

CSV-Hierarchie- und Zeitbuchungs-Import

Massenhafter Import von Stammdaten und Zeitaufwänden via Tabelle.

Für die Migration von Altsystemen bietet daagwerk einen zweigleisigen CSV-Importer. Neben der Massenanlage von Kundenstrukturen können Zeitbuchungen über eine benutzerspezifisch vorausgefüllte Vorlage importiert werden. Vor dem endgültigen Schreiben listet eine zeilenweise Vorschau alle Validierungen und Konflikte auf, wobei der Nutzer flexibel zwischen den Modi „Überspringen" oder „Ersetzen" wählen kann.

Datensouveränität

Tägliche systemd-Gzip-Backups & Retention

Automatisierte nächtliche Sicherung aller Mandantendaten.

Ein systemd-Timer triggert jede Nacht um 02:00 Uhr einen automatisierten Backup-Cronjob auf dem in Deutschland gehosteten Server. Das System erstellt einen vollständigen, komprimierten JSON-Gzip-Snapshot des gesamten isolierten Datenbestands. Eine rollierende 28-Tage-Retention-Policy löscht ältere Stände automatisch, um Speicherplatz zu schonen und DSGVO-Konformität zu wahren.

Verschlüsseltes externes WebDAV-Backup-Ziel

Automatisierter Zweit-Upload von Backups auf kundeneigene Cloud-Speicher.

Admins können in den Unternehmens-Einstellungen einen externen WebDAV-Server (wie Nextcloud oder ownCloud) als sekundäres Sicherungsziel definieren. Das System überträgt die täglichen verschlüsselten Snapshots automatisch dorthin. Über einen „Verbindung testen"-Button lässt sich die Konfiguration mittels eines direkten PROPFIND-Requests sofort im UI validieren.

Granularer Point-in-Time-Restore (Safety-First)

Sichere Wiederherstellung von Datenbeständen bis zu einem Wunschdatum.

Im Falle von Fehlbedienungen können Admins historische Backups direkt aus einer UI-Liste wiederherstellen. Das System unterstützt neben dem Voll-Restore einen Point-in-Time-Modus, der transaktionale Daten exakt auf einen Stichtag filtert. Um Datenverlust auszuschließen, erzwingt das Backend vor jedem Restore-Prozess ein automatisches Sicherheits-Backup (Safety-Backup) des aktuellen Ist-Zustands.

Compliance & Wartung

DSGVO-Self-Service-Datenportabilität

Vollständiger Download aller organisatorischen Daten als ZIP-Archiv.

Um den Anforderungen von DSGVO Art. 20 (Datenportabilität) vollumfänglich gerecht zu werden, steht jedem Nutzer im Profil ein globaler Datenexport zur Verfügung. Das System packt alle jemals erfassten Accounts, Projekte, Jobs, Zeitbuchungen und Benutzerdaten in ein komprimiertes ZIP-Archiv, das sowohl strukturierte JSON-Dateien als auch eine vollständig flach geklappte Kontext-CSV enthält.

Umfassendes Cleanup- & Purge-UI

Zentrales Dashboard zum Bereinigen inaktiver Datenstrukturen.

Auf einer dedizierten Cleanup-Oberfläche können Administratoren verwaiste, ungenutzte oder als inaktiv markierte Accounts, Projekte und Jobs einsehen. Das System aggregiert die hängenden Datensätze und erlaubt das endgültige Löschen (Purge) im Block, sofern keine echten Buchungen mehr mit den Objekten verknüpft sind. Dies hält die Datenbank schlank und performant.

Und morgen?

Was als nächstes kommt, steht auf der Roadmap.

daagwerk wächst kontinuierlich weiter. Kommende Features wie der Profitabilitäts-Layer mit Deckungsgrad-Charts sind auf der Roadmap-Seite dokumentiert — mit klarem Ausblick, was in welcher Version landet.