Zum Inhalt springen

Projekte

PEX — Rechnungs- & Zeiterfassungs-SaaS

2025 – heute

Ein komplettes SaaS-Produkt, allein entwickelt: Laravel-11-API mit Stripe-Abrechnung, Nuxt-3-App mit iOS-Version, Kundenportal und Marketing-Site.

  • Laravel 11
  • Nuxt 3
  • Stripe
  • WebSockets
  • Capacitor iOS
  • Pest
  • Playwright

Das Produkt

PEX ist eine Rechnungs- und Zeiterfassungs-Software für Freelancer und Agenturen: Rechnungen, Gutschriften, wiederkehrende Rechnungen, Angebote, Projekte, Zeiterfassung, Ausgaben — plus ein separates Kundenportal, in dem Kunden ihre Rechnungen einsehen und direkt bezahlen.

Ich habe PEX als Solo-Entwickler gebaut: Produktkonzept, Datenmodell, API, Web-App, iOS-App, Marketing-Site und Betrieb.

Architektur

Besucher ──▶ Marketing-Site (Astro 5, statisch)
                    │  Sign-up
Team     ──▶ Web-App (Nuxt 3) ──┐
Kunde    ──▶ Kundenportal ──────┤──▶ API (Laravel 11) ──▶ MySQL
iOS      ──▶ Capacitor-App ─────┘         │  ▲
                                      Stripe ┘ (Webhooks)

Zwei getrennte Auth-Domänen: Team-Nutzer über Laravel Sanctum, Portal-Kunden über einen eigenen Guard mit Bearer-Tokens. So bleiben interne Daten und Kundenzugriff sauber isoliert.

Technische Höhepunkte

  • Abo-Abrechnung mit Stripe Cashier — Subscriptions, Portal-Zahlungen und Webhook-Verarbeitung, inklusive fehlertoleranter Wiederholungslogik.
  • CSV-Massenimport mit Live-Fortschritt — Hintergrund-Jobs über Laravel Horizon, Fortschritt in Echtzeit per WebSockets (Pusher) bis ins Frontend.
  • Rich-Text überall — Angebots- und Rechnungstexte mit TipTap-Editor, konsistent zwischen Web und iOS.
  • Qualität als Standard — 53 Pest-Tests im Backend, Playwright-E2E-Tests im Frontend, vier GitHub-Actions-Workflows für CI.
  • Ein Codebestand, zwei Plattformen — die Nuxt-App läuft unverändert als iOS-App über Capacitor.

Ergebnis

Ein lauffähiges SaaS-Produkt mit Marketing-Site, App und Kundenportal — komplett aus einer Hand. Genau der Projektumfang, den ich auch für Kunden umsetze: vom leeren Repository bis zum bezahlenden Nutzer.