Danny Kukic
    • EasyPointmentOnline-Buchung für Praxen.
    • PillRemindEin Medikamenten-Wecker für Android.
    • Toivoa TassuilleHundemassage & Lasertherapie.
    • Kennel UnlockSpringer-Spaniel-Züchter.
← Projekte
Case Study
Easy Pointment

Buchungssoftware, die
von allein läuft

Online-Termine, automatische Erinnerungen und Nachfass-Mails für Praxen. Entworfen und gebaut habe ich das Ganze selbst, von der Buchungsseite bis zum Scheduler, der die Erinnerungen verschickt.

6Services2Sprachen2026gebaut
Termine heute 08:52
SK
Sarah Klein09:00
Offen
MR
Marc Reuter10:30
Offen
AL
Anna Lange11:15
Offen

Niemand hat diese Seite offen. Der Scheduler wacht von selbst auf, arbeitet ab, was ansteht, und schiebt jeden Termin weiter.

Worum es geht

Was eine Praxis bekommt

Jede Praxis bekommt ihren eigenen Buchungslink, ihre eigenen Öffnungszeiten und ihre eigene Leistungsliste. Patienten wählen einen Termin, ohne anzurufen, die Bestätigung geht sofort raus, die Erinnerung zwei Tage vorher. Nach dem Termin fragt eine Nachfass-Mail nach einer Bewertung und lädt zur nächsten Buchung ein. Ich habe jede Ebene davon selbst geschrieben, die Oberfläche, die API, die Datenbank und die Jobs dazwischen.

Die öffentliche Buchungsseite
Die Buchungsseite mit freien Zeitfenstern für eine gewählte Leistung
Der Kern

Warum es ein Backend brauchte

Das ist das einzige meiner Projekte, das ein System ist und keine Website. Das Backend gibt es wegen vier Dingen, die im Browser nicht passieren können.

01

Ein freier Termin muss berechnet werden

Die Öffnungszeiten dieses Wochentags, die Schließtage, die Dauer der gewählten Leistung und jeder Termin, der schon steht. Frei ist, was nach allen vieren übrig bleibt, und das stimmt nur, wenn der Server es ausrechnet.

02

Die Erinnerung geht zwei Tage vor dem Termin raus

Das kann nicht in einem Browser-Tab laufen. Ein Scheduler wacht von selbst auf, gibt die Arbeit an eine Queue, ein Worker verschickt sie. Ein Versand kann scheitern, ohne dass jemand danebensteht, also werden Fehlschläge wiederholt.

03

Der Status eines Termins wandert von allein

Offen, erinnert, bestätigt, abgeschlossen. Jeder Übergang wird sofort in einer History-Tabelle festgehalten, damit nachvollziehbar bleibt, was das System getan hat, auch lange nach der Sitzung, die es angestoßen hat.

04

Jede Praxis muss von den anderen abgeschottet sein

Ein Deployment bedient viele Praxen, jede mit eigenem Link, eigenen Leistungen und eigenen Zeiten. Jeder geschützte Request löst auf, welcher Praxis der Aufrufer gehört, und begrenzt die Abfrage darauf. Ein Fehler dabei würde die Patientenliste einer Praxis im Dashboard einer anderen auftauchen lassen.

Dashboard, Termine
Die Terminliste im Dashboard mit dem aktuellen Status jeder Buchung
Im Betrieb

Was tatsächlich läuft

Sechs Container. Das Nuxt-Frontend reicht die Anfragen an die API weiter, statt sie aus dem Browser aufzurufen, so verlässt das Session-Cookie nie den Server. Postgres hält die Daten, Redis ist die Queue, dahinter zwei Celery-Prozesse, ein Worker, der verschickt, und ein Scheduler, der entscheidet wann. Nichts startet, bevor das, wovon es abhängt, gesund ist.

Browser
▼
Nuxt 4 · frontend
▼
FastAPI · backend
▼
PostgreSQL
Redis
▼
Celery worker
Celery beat
Dashboard, Kalender
Der Kalender im Dashboard mit einem Monat an Terminen über die Öffnungstage der Praxis
Pflege

Migrationen, Tests und Rate Limits

Schema-Änderungen laufen über Migrationen statt von Hand, damit die Datenbank sich von null neu aufbauen lässt und immer im selben Zustand landet. Zehn Test-Suites decken die Routen, die Terminberechnung, das Scheduling und die Rate Limits ab, dazu Komponenten- und Composable-Tests im Frontend. Die öffentlichen Endpunkte sitzen hinter einem Rate Limit, weil ein Buchungsformular für jeden im Internet erreichbar ist.

Der Stack

  • Nuxt 4
  • Vue 3
  • TypeScript
  • Tailwind 4
  • PrimeVue
  • Firebase Auth
  • FastAPI
  • Python
  • SQLAlchemy
  • Alembic
  • PostgreSQL
  • Redis
  • Celery
  • Docker

In der Liste steht PrimeVue, das diese Seite hier nicht benutzt. Was du siehst, ist von Hand in Tailwind nachgebaut. Eine ganze Komponentenbibliothek mitzuschleppen, um sechs Karten zu zeichnen, wäre ein merkwürdiger Tausch.

Dashboard, Auswertung
Die Auswertung im Dashboard mit Buchungsverlauf und wiederkehrenden Patienten über die Zeit

Warum kann man es nicht kaufen?

Weil der nächste Schritt ein juristischer ist und kein technischer. Wer die Patientendaten fremder Praxen verarbeitet, braucht Verträge und eine Auftragsverarbeitungsvereinbarung, und das ist Sache eines Anwalts, nicht die eines Wochenendes. Die Software ist deployt und läuft. Was fehlt, ist das Papier.

Deployt und bewusst geparkt.

Rolle

Design und Umsetzung, komplett

Live unter

easypointment.com

Jahr

2026

EasyPointmentTermine, Erinnerungen und Nachfass-Mails für Praxen.
Nächstes Projekt: PillRemind →

© 2026 Danny Kukic

ImpressumDatenschutz