Zurück zum Blog
Jul 24, 2026
Engineering
Greta Redaktionsteam

Wie Sie mit KI eine Plattform für Geräteverleih aufbauen

Wer serialisierte Geräte vermietet, muss einzelne Einheiten verfolgen, nicht nur Kategorien --- Verfügbarkeitskalender, Kautionsreserven und Schadensgebühren, die auch an einem vollen Samstag funktionieren. So setzt Greta diese Logik mit Next.js und Postgres um.

Wie Sie mit KI eine Plattform für Geräteverleih aufbauen

Wie Sie mit KI eine Plattform für Geräteverleih aufbauen

Kurzantwort

Eine Plattform für Geräteverleih ist eigentlich zwei Systeme in einer Oberfläche: ein Kalender, der Standort und Zustand jeder seriennummerierten Einheit verfolgt, und eine Zahlungsschicht, die eine Kaution hält, bis diese Einheit unversehrt zurückkommt. Greta setzt beides auf Next.js und Postgres auf — überschneidungssichere Buchungen, die auf Datenbankebene durchgesetzt werden, Stripe-Holds für Kautionen und Inventar pro Standort — sodass Sie nicht drei separate Tools zusammenkleben müssen, nur um einen Hochdruckreiniger zu vermieten.

Warum bricht eine geteilte Tabelle am ersten stressigen Wochenende zusammen?

Stellen Sie sich einen Samstagmorgen am Werkzeugverleih-Schalter vor: Drei Lastwagen sind bereits unterwegs, ein Kunde will die letzte Fliesensäge für einen Badezimmer-Job, der in einer Stunde beginnt, und jemand prüft ein Google Sheet, ob Einheit #14 tatsächlich zurück ist. Ist sie nicht. Sie steht noch auf einer Baustelle zwei Ortschaften weiter, und in der Tabelle steht "verfügbar", weil sie am Donnerstagabend niemand aktualisiert hat.

Das ist kein Schulungsproblem. Es ist ein Architekturproblem. Eine Tabelle oder ein generisches, auf die Website geklebtes Buchungswidget verfolgt eine Kategorie von Artikeln — "Fliesensäge", "Hochdruckreiniger" — nicht die konkrete Einheit mit der konkreten Seriennummer, die gerade dreißig Minuten davon entfernt ist, gereinigt und wieder ins Regal gestellt zu werden. Ab einer Handvoll Einheiten oder mehr als einem Schalter beginnt kategorienbasierte Verfolgung, Sie zu belügen.

Die Lücke zwischen "zurückgegeben" und "verfügbar"

Selbst Systeme, die einzelne Einheiten verfolgen, übersehen oft die Lücke zwischen einer zurückgekehrten Einheit und einer wieder vermietbaren Einheit. Etwas, das schmutzig, beschädigt oder mit fehlendem Teil zurückgegeben wird, braucht eine Inspektion, bevor der nächste Kunde es anfasst. Behandeln Sie "zurückgegeben" und "verfügbar" als dasselbe Ereignis, werden Sie irgendwann Geräte weitergeben, die niemand tatsächlich geprüft hat.

Was muss auf Datenbankebene gelten, um Doppelbuchungen zu verhindern?

Das ist der Teil, der ein echtes Vermietungssystem von einem hübsch aussehenden Kalender unterscheidet. Eine Doppelbuchung zu verhindern ist kein Formularvalidierungs-Problem — es ist eine Bedingung, die die Datenbank durchsetzt, egal wie viele Anfragen gleichzeitig eintreffen. Zwei Kunden, die innerhalb derselben Sekunde auf "bestätigen" für denselben Generator klicken, ist ein reales Szenario, kein Randfall, den man abtun kann.

Das Muster, das sich bewährt: Jede physische Einheit bekommt ihre eigene Zeile, jede Buchung ist ein Datumsbereich, der an diese Einheit gebunden ist, und ein Exclusion-Constraint auf Datenbankebene — Postgres unterstützt das nativ — lehnt jede neue Buchung ab, deren Bereich sich mit einer bestehenden für diese Einheit überschneidet. Kein Polling, keine "prüfen-dann-schreiben"-Race-Condition, kein Verlass darauf, dass der Anwendungscode auffängt, was die Datenbank ohnehin abfangen sollte. Ich habe Teams gesehen, die versucht haben, das allein mit anwendungsseitigen Prüfungen zu lösen. In der Demo funktioniert es einwandfrei — dann scheitert es am ersten Wochenende, an dem zwei Leute dieselbe Seite aktualisieren.

Legen Sie zusätzlich einen Puffer auf diesen Constraint — eine Lücke von zwei bis vier Stunden nach einer geplanten Rückgabe, bevor die nächste Buchung beginnen kann —, und Sie haben beide Probleme auf einmal gelöst: die Überschneidung und das Inspektionsfenster, das niemand überspringen möchte.

Wo leben Kautionen und Schadensgebühren tatsächlich im Ablauf?

Nicht als manueller "Karte später belasten"-Schritt, den sich jemand merken muss. Eine Vermietungsbuchung sollte bei der Abholung eine Autorisierungs-Reservierung — keine Belastung — auf der Karte des Kunden platzieren, bemessen an den Wiederbeschaffungs- oder Reparaturkosten der Einheit. Stripes Payment Intents unterstützen das direkt: eine Reservierung von 150 $ für einen Laubbläser, 400 $ für einen Mini-Bagger-Anbau.

Bei der Rückgabe protokolliert das Personal eine Zustandsprüfung — ein paar Fotos, eine kurze Notiz, ein Häkchen für "voller Tank, kein Schaden" — und das System gibt entweder die Reservierung vollständig frei oder zieht den Schadensanteil davon ab. Dabei geht es nicht darum, Kunden zu schröpfen. Es geht darum, dass die Gebührenentscheidung anhand eines dokumentierten Datensatzes im Moment der Rückgabe getroffen wird, nicht durch einen Anruf drei Tage später, bei dem sich niemand mehr erinnert, wessen Schuld der Riss war.

Was ändert sich, sobald Sie mehr als einen Standort haben?

Alles oben Genannte gilt weiterhin, Einheit für Einheit — aber jetzt möchte ein Kunde an Ihrer Ostseite-Filiale vielleicht eine Einheit, die untätig an der Westseite-Filiale steht. Das ist ein Transfer, und er braucht einen eigenen Status. Eine Einheit sollte sich in einem von vier Zuständen befinden können — verfügbar, gebucht, im Transit zwischen Standorten oder in Inspektion —, und Ihre Buchungslogik muss diesen Status prüfen, bevor sie die Einheit überhaupt jemandem anbietet.

Der praktische Fix besteht darin, den Standort als Eigenschaft der Einheit zu behandeln, nicht des Kontos. Eine Abfrage nach "ist ein 20-Gallonen-Kompressor am Freitag verfügbar" muss jeden Standort prüfen, Distanz oder verfügbares Personal für die Übergabe abwägen und erst dann dem Kunden einen Slot anzeigen. Machen Sie das in die eine oder andere Richtung falsch, verkaufen Sie entweder eine Einheit, die tatsächlich eine Stunde entfernt ist, oder Sie verstecken Inventar, das direkt im Regal steht.

Ein schneller Vergleich

AspektTabelle + generisches BuchungswidgetAuf Greta gebaute Plattform
BuchungskonflikteManuell und im Nachhinein erkanntAuf Datenbankebene über Exclusion-Constraints blockiert
KautionenManuelle Kartenbelastung, leicht vergessenStripe-Reservierung bei Abholung, bei Rückgabe eingezogen oder freigegeben
SchadensgebührenEin Anruf und eine VermutungAn einen protokollierten Zustandsdatensatz mit Fotos gebunden
Bestand an mehreren StandortenSeparate Tabellen pro FilialeEin Schema, Standort und Status pro Einheit
Lücke Rückgabe-zu-vermietbarAls sofort angenommenAls eigener Zustand mit Pufferfenster modelliert

Wo das in einer mit Greta gebauten App lebt

Da Greta ein Next.js-Frontend auf einer Prisma-gestützten Postgres-Datenbank aufsetzt, ist nichts davon zusätzliche Infrastruktur — es ist die natürliche Form des Schemas. Eine RentalUnit-Tabelle enthält eine Zeile pro physischem Artikel (Seriennummer, Standort, Status); eine Booking-Tabelle enthält Datumsbereiche mit Fremdschlüssel zur Einheit, wobei ein Postgres-Exclusion-Constraint die Konfliktprüfung übernimmt, statt eines Cron-Jobs, der im Nachhinein prüft. Die Kautions-Reservierung und -Einziehung läuft über eine Stripe-Webhook-Route — etwa app/api/webhooks/stripe/route.ts — die den Kautionsstatus der Buchung in dem Moment aktualisiert, in dem Stripe sie bestätigt, nicht auf Verdacht.

Beschreiben Sie Greta den Ablauf in Klartext — "blockiere eine Einheit vier Stunden lang gegen erneute Buchung nach ihrer geplanten Rückgabe, und verlange eine Manager-Freigabe, bevor eine Schadensreservierung über 200 $ freigegeben wird" — und sie setzt diese Logik direkt ins Schema und in die Buchungsroute um, statt dass Sie eine Tabelle, ein Formular-Tool und ein Zahlungs-Dashboard zusammenstöpseln, die nicht miteinander sprechen.

FAQ

Kann eine Plattform sowohl seriennummeriertes Gerät als auch Massenartikel nach Stückzahl wie Verkehrshütchen oder Klappstühle handhaben? Ja, aber sie brauchen unterschiedliche Modelle. Seriennummerierte Artikel — ein bestimmter Bagger, ein bestimmter Generator — bekommen ihre eigene Zeile und ihren eigenen Kalender. Mengenbasierte Artikel bekommen stattdessen eine Bestandsprüfung nach Stückzahl statt einer Einzelbuchung. Ein gut gebautes Schema unterstützt beides, ohne Massenartikel durch einen Einzeleinheiten-Kalender zu zwingen, den sie nicht brauchen.

Braucht das Personal eine dedizierte mobile App für Abhol- und Rückgabeinspektionen? Nicht zwingend eine App-Store-App. Eine mobil-responsive Webseite, auf der Personal ein Foto macht, eine Zustandscheckliste abhakt und die Übergabe bestätigt, funktioniert für die meisten Vermietungsbetriebe gut — und genau das setzt Greta standardmäßig auf.

Was passiert, wenn ein Kunde versucht, eine Vermietung zu verlängern, die am nächsten Tag bereits von jemand anderem gebucht ist? Der Exclusion-Constraint lehnt die Verlängerung in dem Moment ab, in dem sie sich mit der nächsten Buchung überschneiden würde, und die App kann stattdessen den nächsten verfügbaren Slot anbieten — dieselbe Logik, die Doppelbuchungen von vornherein verhindert, übernimmt das automatisch.

Ist das dasselbe Problem wie ein generischer Buchungssystem-Builder? Verwandt, aber nicht identisch. Eine Dienstleistungsbuchung — ein Haarschnitt, ein Beratungsgespräch — reserviert einen Zeitblock von jemandes Zeit. Eine Vermietung reserviert ein physisches, seriennummeriertes Objekt, das reisen, inspiziert werden und in nutzbarem Zustand zurückkommen muss. Siehe ein Buchungssystem mit KI bauen für die zeitslot-basierte Seite dieses Vergleichs.

Abschluss

Vermietungslogistik sieht hinter dem Schalter einfach aus und wird zu einem Datenbankproblem, sobald Sie mehr als einen Lastwagen und einen Kalender zu koordinieren haben. Bekommen Sie das Tracking auf Einheitenebene, den Überschneidungs-Constraint und den Kautionsablauf richtig hin, und der Rest — die Oberfläche, die Erinnerungen, das Reporting — ist der leichte Teil.

Beginnen Sie noch heute mit dem Aufbau Ihrer App mit Greta.

Ende des Artikels
Zurück nach oben

Baue etwas Echtes

Wenn du es beschreiben kannst, kannst du es bauen.