Stundentracker 1.75.0

froodwork

Stundenerfassung, die auf deinem eigenen Server läuft.

Von der gearbeiteten Minute bis zur Rechnung: erfassen, zuordnen, bewerten, abrechnen. PHP und SQLite, kein Build-Schritt, keine externe Datenbank, kein Framework. Entpacken, hochladen, aufrufen.

2 DateienAlles Wertvolle

data/ und uploads/. Der Rest ist ersetzbarer Code.

PHP 7.4+Voraussetzung

Dazu pdo_sqlite. Mehr braucht es nicht — gd und zip sind optional.

0 RequestsNach außen

Kein CDN, kein Tracking, kein npm. Schriften und Symbole liegen im Ordner.

Die App

Aufnahmen aus der laufenden App · Klick zeigt gross
Ein Rundgang durch die acht Reiter: Erfassen, Positionen, Projekte, Kunden, Anrufe, Auswertung, Einstellungen. Aufgenommen aus der laufenden App.
Erfassen. Der Timer läuft auf dem Server weiter, auch wenn der Tab zu ist — daneben stehen Betrag und Stundensatz, darunter die Kennzahlen für Tag, Woche, Monat und das noch nicht Abgerechnete, hier getrennt nach zwei Währungen.
Erfassen. Der Timer läuft auf dem Server weiter, auch wenn der Tab zu ist — daneben stehen Betrag und Stundensatz, darunter die Kennzahlen für Tag, Woche, Monat und das noch nicht Abgerechnete, hier getrennt nach zwei Währungen.
Positionen mit allen Filtern. Die App weist aus, wo sich zwei Einträge am selben Tag zeitlich überschneiden — sie speichert trotzdem, denn manchmal ist die Doppelbuchung gewollt.
Positionen mit allen Filtern. Die App weist aus, wo sich zwei Einträge am selben Tag zeitlich überschneiden — sie speichert trotzdem, denn manchmal ist die Doppelbuchung gewollt.
Projekte, nach Kunde gruppiert. Wo ein Kontingent hinterlegt ist, steht ein Balken mit dem Verbrauch, dem Rest und dem Tag, an dem es bei diesem Tempo voll ist.
Projekte, nach Kunde gruppiert. Wo ein Kontingent hinterlegt ist, steht ein Balken mit dem Verbrauch, dem Rest und dem Tag, an dem es bei diesem Tempo voll ist.
Aus der Auswahl wird ein Rechnungslauf: Positionen, Stunden, Netto, Steuersatz und Brutto stehen fest, bevor irgendetwas passiert. Die Nummer schlägt die App nach deinem Muster vor.
Aus der Auswahl wird ein Rechnungslauf: Positionen, Stunden, Netto, Steuersatz und Brutto stehen fest, bevor irgendetwas passiert. Die Nummer schlägt die App nach deinem Muster vor.
Danach steht der Lauf unter Rechnungen — mit Nummer, Kunde, Datum, Stunden und Betrag. Von hier lässt er sich ansehen oder komplett zurücknehmen; die Positionen sind dann wieder offen.
Danach steht der Lauf unter Rechnungen — mit Nummer, Kunde, Datum, Stunden und Betrag. Von hier lässt er sich ansehen oder komplett zurücknehmen; die Positionen sind dann wieder offen.
Was der Kunde über seinen Link sieht: nur seine eigenen, noch nicht berechneten Stunden. Keine Anmeldung, kein Formular, jederzeit widerrufbar.
Was der Kunde über seinen Link sieht: nur seine eigenen, noch nicht berechneten Stunden. Keine Anmeldung, kein Formular, jederzeit widerrufbar.
Dieselbe App auf dem Handy, als PWA installiert. Touch-Bedienung und kleine Displays sind kein Nebenfall.
Dieselbe App auf dem Handy, als PWA installiert. Touch-Bedienung und kleine Displays sind kein Nebenfall.
Dieselbe Seite in allen acht mitgelieferten Schemata. Jede Fläche muss in jedem davon tragen, hell wie dunkel — deshalb kommen alle Farben als Variablen aus einer Quelle.

Fünf Sätze, an denen sich alles ausrichtet

  • Die Daten gehören dem Betreiber. Kein externer Dienst, keine Laufzeitabhängigkeit. Was die App braucht, liegt in ihrem eigenen Ordner.
  • Nichts wird stillschweigend entschieden. Vergessener Timer, Überschneidung, fremde Währung: die App fragt oder weist aus, statt zu raten.
  • Erfassen darf nicht unterbrechen. Der Weg von „ich fange jetzt an“ bis zum laufenden Timer ist der kürzeste Weg der App.
  • Das Schema ist Vertrag. Jede Fläche funktioniert in jedem Nutzerschema, hell wie dunkel. Gestaltung arbeitet mit den Variablen, nicht gegen sie.
  • Einfach genug, um sie in zehn Jahren noch zu warten. Lesbarer Code ohne Build, ehrliche Dokumentation, keine Abkürzung, die später jemanden einsperrt.

Erfassen

Live-Timer, serverseitig laufend — er zählt weiter, wenn du den Tab schließt oder das Gerät wechselst. Oder manuell nachtragen.

Projekte & Kunden

Stundensätze gelten hierarchisch: Position → Projekt → Kunde → Standardsatz. Der erste gefundene Wert zählt.

Anrufe

Ein eigener Bereich. Gespräche hängen am Kunden, nicht am Projekt — und pausieren einen laufenden Projekttimer.

Vorlagen

Wiederkehrende Arbeiten als Baustein über den Kennzahlen. Ein Klick startet den Timer damit; häufig Genutztes wandert nach vorn.

Rechnungsläufe

Aus einer Auswahl wird eine Rechnung mit Nummer, Datum und Notiz — nach eigenem Nummernmuster, jederzeit rücknehmbar.

Kundenlink

Eine reine Leseansicht der offenen Stunden, 128-Bit-Schlüssel im Link, widerrufbar, ohne Anmeldung und ohne Formular.

Schwebefenster

Auf dem Desktop schrumpft die App auf ein kleines Fenster mit Zeit, Pause und Stopp — in Chrome und Edge über allen anderen.

PWA

Auf iOS und Android installierbar, mit eigenem Icon aus deinem Logo. Handy und Desktop sind gleichwertig.

Export

CSV mit allen aktiven Filtern, vollständiger JSON-Export, Backup-ZIP. Deine Daten bleiben deine Daten.

Der Unterschied

Zu SaaS-Zeiterfassung: Die Daten bleiben bei dir, es gibt keine laufenden Kosten und keine Abhängigkeit vom Fortbestand eines Anbieters. Zu selbstgehosteten Alternativen: kein Docker, kein Composer, keine MySQL-Instanz. Signierte Selbst-Updates aus deinem eigenen Verzeichnis halten das aufrecht, ohne dass du jedes Mal per FTP arbeiten musst.