Zeiterfassungs-App bauen: Timer, Stundenzettel und Berichte
Eine Zeiterfassungs-App hält fest, wer woran wie lange gearbeitet hat und ob diese Zeit abgerechnet werden kann. Um sie zu bauen, brauchst du Kunden und Projekte, auf die sich die Zeit bezieht, einen Timer, der ein geschlossenes Browser-Tab überlebt, eine Möglichkeit, Einträge von Hand hinzuzufügen und zu korrigieren, einen Wochen-Stundenzettel und Berichte, die Einzeleinträge in Summen verwandeln. Ein KI-App-Builder kann aus einem klaren Prompt eine funktionierende erste Version erzeugen. Die entscheidenden Fragen betreffen Regeln: Rundung, wer was bearbeiten darf, wann eine Woche gesperrt wird und was abrechenbar ist.
Lege fest, wofür du die Zeit erfasst
Dieselbe App sieht je nach Zweck anders aus:
- Abrechnung gegenüber Kunden. Stunden pro Kunde, ein Satz pro Person oder Projekt und ein sauberer Export für Rechnungen. Genauigkeit und eine Prüfspur sind am wichtigsten.
- Lohnabrechnung für Stundenlöhner. Ein- und Ausstempeln, Pausen, Überstundenregeln und eine Freigabe durch die Führungskraft. Es gelten die örtlichen Arbeitszeitregeln, prüfe also, welche Nachweise du aufbewahren musst.
- Verstehen, wohin die Zeit fließt. Persönliche oder Team-Einblicke, Schätzungen gegenüber tatsächlichem Aufwand. Geschwindigkeit der Erfassung zählt mehr als Freigabeabläufe.
Wähle für die erste Version einen Hauptzweck. Der Zeiterfassungs-Tracker einer Freelancerin und die Schichtuhr eines Lagers teilen sich einen Timer und sonst kaum etwas.
Was die App braucht
Daten
| Tabelle | Wichtige Felder |
|---|---|
| Kunden | Name, Standard-Stundensatz, aktiv ja/nein |
| Projekte | Kunde, Name, Budget in Stunden (optional), standardmäßig abrechenbar ja/nein |
| Aufgaben oder Kategorien | Projekt, Name (Design, Besprechungen, Support), am Anfang optional |
| Zeiteinträge | Person, Projekt, Aufgabe, Startzeit, Endzeit, Dauer, Notiz, abrechenbar ja/nein, Status (Entwurf, eingereicht, freigegeben), in Rechnung gestellt ja/nein |
| Personen | Name, E-Mail, Rolle, Kostensatz oder Verrechnungssatz |
Speichere bei jedem Eintrag die Start- und Endzeit und leite die Dauer daraus ab. Einträge, die als „2h 15min“ ohne Uhrzeiten eingetippt werden, können nur die Dauer speichern, sollten aber ein Datum behalten.
Seiten
- Timer und heute: ein großer Start-/Stopp-Knopf, eine Projektauswahl und darunter die heutigen Einträge.
- Wochenansicht: ein Raster mit Projekten untereinander und Tagen nebeneinander, in das Leute Stunden direkt eintragen. Viele bevorzugen das gegenüber Timern.
- Berichte: Stunden nach Kunde, Projekt und Person für einen Zeitraum, aufgeteilt in abrechenbar und nicht abrechenbar, mit CSV-Export.
- Admin: Kunden, Projekte, Personen und Sätze verwalten.
Berechtigungen
Lege vor dem Bauen fest, wer was darf:
- Personen sehen und bearbeiten ihre eigenen Einträge.
- Führungskräfte sehen die Einträge ihres Teams und geben Wochen frei.
- Nur Admins ändern Sätze, und idealerweise sehen nur Admins sie überhaupt.
- Niemand bearbeitet einen Eintrag, der freigegeben oder in Rechnung gestellt wurde, außer ein Admin öffnet ihn wieder.
Diese letzte Regel macht die Berichte vertrauenswürdig. Unser Leitfaden zu einem Login für deine App behandelt die Anmeldung, und rollenbasierte Zugriffskontrolle behandelt die Rollen.
Entscheidungen und Abwägungen
Timer, manuelle Erfassung oder beides
Timer sind genau, wenn Leute daran denken, sie zu starten, und das ist nicht immer der Fall. Manuelle Erfassung ist schnell für Leute, die ihre Woche am Freitag ausfüllen. Die meisten Teams brauchen beides und eine Möglichkeit, einen Timer-Eintrag nachträglich zu bearbeiten. Wenn du nur eines baust, nimm das Wochenraster; es ist einfacher und deckt den Fall „Start vergessen“ ab.
Wo der laufende Timer lebt
Ein Timer, der im Browser zählt, verliert alles, sobald das Tab geschlossen wird. Speichere die Startzeit in der Datenbank, wenn jemand Start drückt, und zeige die verstrichene Zeit, indem du sie von jetzt abziehst. Der Timer läuft dann weiter über Neuladen, Laptops und Handys hinweg. Lege fest, ob eine Person zwei Timer gleichzeitig laufen lassen kann. Meist lautet die Antwort nein: Wenn ein neuer startet, stoppt der alte.
Rundung
Übliche Regeln sind, jeden Eintrag auf die nächsten 6, 15 oder 30 Minuten aufzurunden. Halte die genauen Zeiten in der Datenbank und wende Rundung nur in Berichten und Rechnungen an. Zeige in Berichten beide Werte, damit niemand überrascht wird.
Sperren und Freigaben
Ohne Sperre können die abgerechneten Stunden des letzten Monats noch geändert werden, nachdem die Rechnung verschickt wurde. Ein einfaches Modell: Leute reichen eine Woche ein, eine Führungskraft gibt sie frei, und freigegebene Einträge werden schreibgeschützt. Wenn du Rechnungen aus der App erstellst, markiere Einträge als in Rechnung gestellt, damit sie nicht doppelt abgerechnet werden.
Zeitzonen und Mitternacht
Speichere Zeiten in UTC und zeige sie in der Zeitzone der Person an. Lege fest, zu welchem Tag ein Eintrag gehört, der von 23:00 bis 01:00 läuft. Die übliche Antwort ist der Tag, an dem er begonnen hat.
Ein erster Prompt, der funktioniert
Baue eine Zeiterfassungs-App für ein Designstudio mit sechs Personen. Daten: Kunden (Name, Stundensatz), Projekte (Kunde, Name, Budgetstunden) und Zeiteinträge (Person, Projekt, Start, Ende, Notiz, abrechenbar ja/nein, Status Entwurf/eingereicht/freigegeben). Seiten: eine Seite „Heute“ mit Start-/Stopp-Timer und Projektauswahl, die die Startzeit in der Datenbank speichert, damit der Timer ein Neuladen überlebt; eine Seite „Woche“ mit Projekten als Zeilen und Montag bis Sonntag als Spalten, in die Leute Stunden direkt eintragen können; eine Berichtsseite mit Stunden nach Kunde, Projekt und Person für einen Zeitraum, aufgeteilt in abrechenbar und nicht abrechenbar, mit CSV-Export; und eine Admin-Seite für Kunden, Projekte und Personen. Pro Person läuft nur ein Timer. Freigegebene Einträge können nicht bearbeitet werden. Speichere Zeiten in UTC und zeige sie in der Zeitzone des Nutzers. Schlichtes, schnelles, tastaturfreundliches Design.
Der Prompt nennt Tabellen, Seiten, das Timer-Verhalten und die Sperrregel, also genau die Dinge, die eine KI sonst raten müsste.
Bauschritte
- Zuerst Projekte und manuelle Einträge. Kunden, Projekte, ein Formular zum Hinzufügen eines Eintrags und eine Liste. Stelle sicher, dass sich die Summen richtig addieren.
- Timer. Start, Stopp, ein laufender Timer pro Person, gespeicherte Startzeit. Teste, indem du einen Timer startest, das Tab schließt und wieder öffnest.
- Wochenraster. Das Eintippen von Stunden in eine Zelle erstellt oder aktualisiert einen Eintrag.
- Login und Rollen. Füge sie hinzu, bevor echte Leute die App nutzen, damit niemand aus Versehen Sätze oder fremde Einträge sieht.
- Einreichen und freigeben. Wöchentliche Einreichung, Freigabe durch die Führungskraft, schreibgeschützt nach der Freigabe.
- Berichte und Export. Zeitraum, Gruppierung, Aufteilung abrechenbar, CSV.
- Sätze und Anbindung an Rechnungen, wenn du Kunden abrechnest. Halte die Rechnungserstellung in einem eigenen Schritt oder einer eigenen App; siehe wie du eine Rechnungs-App baust.
- Randfälle testen. Ein Eintrag über Mitternacht, eine Woche mit Zeitumstellung, zwei Timer, die von zwei Geräten gestartet werden, das Bearbeiten eines freigegebenen Eintrags.
Häufige Fehler
- Zeit nur im Browser zählen. Das funktioniert in der Demo und verliert im echten Betrieb Stunden.
- Gespeicherte Werte runden. Die genaue Zeit lässt sich dann nie wiederherstellen.
- Keine Sperre für freigegebene Wochen. Berichte stimmen dann nicht mehr mit den Rechnungen überein.
- Alle sehen alle Sätze. Blende Sätze von Anfang an nach Rolle aus.
- Zu viele Pflichtfelder. Dauert das Erfassen von Zeit mehr als ein paar Sekunden, hören Leute damit auf, und die Daten werden zur Fiktion. Mache Aufgabe und Notiz zunächst optional.
- Einen vollständigen Projektmanager in den Tracker bauen. Halte Projekte als einfache Bezeichnungen. Brauchst du Aufgaben, Boards und Fristen, ist das ein Projektmanagement-Tool, ein separates Projekt.
Wann ein fertiger Tracker die bessere Wahl ist
Wenn dein Team einen Timer, eine Wochenansicht und Berichte braucht, können spezialisierte Zeiterfassungsprodukte das bereits gut. Sie bringen außerdem Dinge mit, die viel Arbeit kosten: Desktop- und Handy-Apps, Erkennung von Leerlauf, Integrationen mit Kalender und anderen Tools sowie Erinnerungen an das Ausfüllen der Stundenzettel. Bei Lohnabrechnung für Stundenlöhner behandelt ein dafür gebautes Tool Pausen, Überstunden und Aufzeichnungspflichten sicherer als eine erste Version einer eigenen App.
Baue selbst, wenn deine Regeln nicht passen, wenn du Stunden mit Daten verbinden willst, die du bereits führst (Aufträge, Arbeitsaufträge, Retainer, Rechnungen), wenn Preise pro Platz bei einem großen Team teuer werden oder wenn Zeiterfassung nur ein Teil eines größeren internen Tools ist. Unser Leitfaden zu Selbstbauen oder Kaufen von Software erklärt den Abwägungsprozess, und wenn deine Stunden derzeit in einer geteilten Tabelle liegen, siehe wie du eine Tabelle in eine App verwandelst.
Mit Mythex bauen
In Mythex beschreibst du den Tracker im Chat, und der Agent baut ihn in einer Live-Vorschau. Wenn Einträge gespeichert werden müssen, fügt er eine eigene Postgres-Datenbank hinzu; du kannst das direkt verlangen oder /database eingeben. Der Anwendungsfall „Interne Tools“ in der Dokumentation empfiehlt, für die erste Version einen schmerzhaften Schritt herauszugreifen, was hier passt: Beginne mit Einträgen und dem Wochenraster, dann kommen Timer und Freigaben.
Die Anmeldung für dein Team richtest du mit deinem eigenen Authentifizierungsansatz ein (Rezept zum Login). Mythex-Konten sind für die Personen da, die bauen, nicht für die Personen, die deine App nutzen. Sobald der Kernablauf funktioniert, kann dich /test durch die Vorschau klicken lassen (Timer starten, Eintrag hinzufügen, Bericht erstellen) und meldet, was kaputtgeht. Eine visuelle Ausgangsbasis findest du in den App-Vorlagen.
Fragen
Welche Funktionen braucht eine Zeiterfassungs-App?
Eine Liste von Kunden und Projekten, einen Start-/Stopp-Timer, eine Möglichkeit, Einträge von Hand hinzuzufügen oder zu korrigieren, eine Wochen-Stundenzettelansicht und einen Bericht mit Stunden pro Projekt und Person. Freigaben, Abrechnungssätze und Exporte kommen danach.
Wie verhindere ich, dass ein Timer Zeit verliert, wenn der Browser geschlossen wird?
Speichere die Startzeit in der Datenbank in dem Moment, in dem der Timer startet, und berechne die laufende Dauer aus dieser gespeicherten Zeit. Dann geht beim Schließen des Tabs, beim Neuladen oder beim Wechsel des Geräts nichts verloren.
Sollte Zeit gerundet werden?
Speichere die genauen Start- und Endzeiten und wende Rundung erst in Berichten und Rechnungen an. So kannst du die Rundungsregel später ändern, ohne die Historie umzuschreiben.
Lohnt es sich, einen eigenen Zeiterfasser zu bauen?
Meist nur, wenn deine Regeln ungewöhnlich sind oder du Stunden mit anderen Daten verknüpfen willst, die du bereits führst, etwa Aufträge, Kunden oder Rechnungen. Für einfache Timer und Berichte ist ein bestehendes Tool günstiger und schneller.