Making-of · Werkstück
Diese Galerie ist kein Template.
Kein Shopify, kein Baukasten, kein Plugin. Jede Zeile selbst gebaut. Hier steht, wie, und wo die interessanten Entscheidungen lagen.
Ich baue Software beim Kunden zum Laufen und baue selbst die Werkzeuge dazu. Diese Galerie war mein Test: Kann ich einen echten Verkaufs-Flow für digitale, limitierte Güter bauen, der rechtlich in Deutschland hält, auf dem Handy schnell ist und keine fremden Server braucht? Antwort steht online.
Der Stack
Bewusst schlank. Ein einziger Worker serviert die statischen Seiten und die API. Keine React-App, kein Build-Monster, kein Node-Server der nachts abstürzt. Das Frontend ist normales HTML mit ein paar Kilobyte Vanilla-JS. Das hält Jahre ohne Wartung und lädt auf einem alten Android sofort.
Das härteste Problem: zwei Käufer, eine letzte Nummer
Bei limitierten Editionen ist die gefährlichste Sekunde die, in der die vorletzte Nummer weg ist. Zwei Leute klicken gleichzeitig auf die letzte. Wer bekommt sie? Auf keinen Fall beide.
Die Lösung ist ein einziges atomares SQL-Statement im Zahlungs-Webhook. Es sucht die niedrigste freie Nummer und markiert sie in derselben Operation als verkauft. Zwei parallele Anfragen können nicht dieselbe Nummer treffen, weil die zweite die Bedingung status='available' nicht mehr erfüllt:
UPDATE editions SET status='sold', ...
WHERE artwork_id = ?1
AND edition_number = (
SELECT MIN(edition_number) FROM editions
WHERE artwork_id = ?1 AND status='available')
AND status='available'
RETURNING edition_number;
Getestet mit zwei Webhooks, die gleichzeitig auf die letzte Nummer feuern: exakt eine Vergabe, der Verlierer bekommt automatisch die volle Rückerstattung und eine ehrliche Mail. Kein Lock, kein Warteschlangen-System, keine race condition.
Recht ist auch Engineering
Digitale Güter in Deutschland zu verkaufen heißt: das Widerrufsrecht erlischt nur, wenn drei Dinge sauber ineinandergreifen. Der Käufer stimmt vor dem Kauf ausdrücklich zu, bestätigt seine Kenntnis, und bekommt danach eine Vertragsbestätigung auf dauerhaftem Datenträger (§ 356 Abs. 6 BGB, seit der Reform vom Juni 2026 nicht mehr Abs. 5, ein Detail, das viele Generatoren noch falsch ausgeben).
- Die Zustimmung wird mit Zeitstempel gespeichert, bevor es zur Zahlung geht.
- Die Bestätigungs-Mail dokumentiert die Zustimmung wörtlich und liefert erst dann den Download-Link.
- Preise ohne Umsatzsteuer-Hinweis (Kleinunternehmer § 19 UStG), sonst wäre die Angabe irreführend.
Das ist die Art Detail, die zwischen "läuft" und "abmahnbar" entscheidet. Genau da arbeite ich gern.
DSGVO an der eigenen Seite bewiesen
Ich verkaufe unter anderem DSGVO-Web-Checks. Wäre peinlich, wenn meine eigene Seite durchfällt. Also: null Requests an Dritt-Server zur Laufzeit außer der Stripe-Zahlseite. Schriften liegen auf dem eigenen Server, keine Google Fonts, keine Cookies, kein Dritt-Tracking. Die einzige Statistik ist ein Zähler in der eigenen Datenbank, der nur Tag, Seite und Anzahl kennt, ohne IP und ohne Kennung. Selbst die Social-Share-Bilder werden direkt im Worker gerendert, statt einen externen Dienst zu rufen.
In Zahlen
Ich baue und implementiere solche Systeme.
Vom rechtssicheren Kauf-Flow bis zum DSGVO-Check der fertigen Seite. Wenn Sie jemanden suchen, der die Technik baut und den Kunden durch die Einführung führt: reden wir.