Zum Inhalt springen
NB
Alle Projekte Hardware & IoT

Zempto

Eigenes Produkt: Projektmanagement mit CRM, Zeiterfassung, Kundenportal und E-Rechnungen (ZUGFeRD/XRechnung), ergänzt um ein Gerät zur Zeiterfassung am Arbeitsplatz.

Rolle
Konzeption, Architektur und Entwicklung
Zeitraum
2025 – heute
Status
In Entwicklung
Kontext
Eigenes Produkt, nebenberuflich
  • Laravel
  • PHP
  • MySQL
  • Redis
  • Horizon
  • Tailwind CSS
  • Docker
  • ESP32
  • C++
  • Webhooks

Überblick

Zempto ist eine Plattform für kleine Teams: Kunden, Projekte, Aufgaben, Zeiterfassung mit Freigabe-Workflow, Rechnungen mit eingebettetem ZUGFeRD und ein Kundenportal. Dazu kommt ein Gerät zur Zeiterfassung am Arbeitsplatz, das Buchungen über eine signierte Webhook-API an die Plattform meldet.

Mein Beitrag

Zempto ist mein eigenes Projekt. Alle Entscheidungen und der gesamte Code stammen von mir.

  • Konzeption, Datenmodell und Architektur
  • Backend, Oberfläche, Tests und CI-Pipeline
  • Firmware für das ESP32-Gerät und die signierte Webhook-Schnittstelle
  • Betrieb auf einem eigenen Server mit Docker

Das Problem

In kleinen Teams werden Zeiten oft erfasst, aber nicht freigegeben, nicht abgerechnet und gegenüber Kunden nicht transparent gemacht. Gleichzeitig ist der Griff zur Software beim Start einer Aufgabe eine Hürde. Die Folge: Zeiten werden am Ende der Woche geschätzt.

Die Lösung

Ein Laravel-System mit klaren Zuständen: Buchung, eingereicht, freigegeben, abgerechnet. Rechnungen entstehen aus freigegebenen Zeiten, sind lückenlos nummeriert und nach der Finalisierung unveränderlich. Ein kleines Gerät mit Taster und Display startet und stoppt Buchungen physisch.

  • Rollen- und Rechtesystem mit Projektmitgliedschaften
  • Audit-Log mit Feld-Diffs für alle Kernobjekte
  • Queues über Redis und Horizon für Mails, PDFs und Benachrichtigungen
  • HMAC-signierte Webhooks in beide Richtungen

Architektur

Das Gerät (ESP32) spricht per HTTPS mit der API. Buchungen landen in MySQL, Folgeaktionen laufen über Redis-Queues. Das Kundenportal ist Teil des Monolithen und hat einen eigenen Guard.

Technische Entscheidungen

Monolith mit Queues statt Microservices. Eine Person, ein Deployment. Asynchrone Arbeit über Horizon reicht vollkommen.

Rechnungen unveränderlich. Korrekturen nur per Storno. Das ist unbequem, aber fachlich und rechtlich der saubere Weg.

Eigene Hardware. Ein Taster ist schneller als ein Browser-Tab. Firmware in C++ auf dem ESP32, weil die Plattform verbreitet und günstig ist.

Ergebnis

  • Durchgängiger Ablauf von der Buchung bis zur Rechnung mit eingebettetem ZUGFeRD
  • Gerät und Plattform kommunizieren über signierte Webhooks
  • CI mit Pint, Larastan, Tests und Dependency-Audit

Weitere Projekte

Mehr Case Studies

Website für die Zukunftsmesse des Ludwig-Erhard-Berufskollegs Münster.