Tim KruseSoftware Developer
Projekte Einmal noch schlafen

Einmal noch schlafen

Im Umbau

Digitale Adventskalender zum Verschenken, hinter jedem Türchen ein Foto und ein paar Zeilen. Kundenportal und Backoffice, 2026 neu gebaut.

Ein frisch geöffneter Kalender: vierundzwanzig helle Türchen, verstreut über dunkelroten Samt, alle noch geschlossen.
Zeitraum
2024 – heute
Rolle
Allein, Konzept bis Betrieb
Zustand
Im Umbau, Neustart folgt
Code
Repository privat
Läuft unter

Meinen ersten digitalen Adventskalender habe ich 2024 von Hand gebaut, nur für mich. 2025 wollte ich daraus etwas für andere machen, am Ende für drei Familien. Aber jede Bestellung landete bei mir, und ich habe jeden Kalender einzeln von Hand eingerichtet.

Einmal noch schlafen ist der Neubau von 2026: zwei laufende Anwendungen. Die eine trägt Marketing-Seite, Kundenportal, Backoffice und die Programmierschnittstelle; die andere bedient sämtliche Kundenkalender, und welcher gemeint ist, steht in der aufgerufenen Adresse. Zwischen der bezahlten Bestellung und dem verschickbaren Link steht damit kein Mensch mehr. Geht eine der automatischen Prüfungen schief, bekommt der Betreiber Bescheid, bevor der Kunde etwas merkt.

Beim Neubau ist vor allem viel rausgeflogen: keine Containerverwaltung aus der Anwendung heraus, kein Zertifikat je Kunde, kein eigener Zahlungsdienst, kein Datenbankserver. Was bleibt, sind zwei Container, eine Datenbankdatei und ein Verzeichnis mit Bildern. Und es gibt drei Wege hinein, je nachdem, wer kommt: Wer beschenkt wird, muss gar nichts einrichten. Wer kauft, so wenig wie möglich. Und wer den Laden betreibt, meldet sich richtig an.

Stack
TypeScriptExpressAstroReactViteDrizzleSQLiteStripeAnsible

Entscheidungen

ADR 0001

Ein neuer Kalender ist eine Zeile in der Datenbank

Vorher bekam jeder Kunde eine eigene laufende Instanz, mit Proxy-Eintrag und Zertifikat. Das Backoffice brauchte dafür fast die Rechte des Serveradministrators. Und jede Bestellung war eine Kette von Schritten, die an mehreren Stellen scheitern konnte. Die Abschottung, die man damit erkauft, wird nirgends gebraucht: Alle Kalender laufen mit demselben Code, und die Bestelldaten liegen ohnehin gemeinsam. Einen Kalender anzulegen heißt jetzt, eine Zeile in die Datenbank zu schreiben.

ADR 0003

Fremder Bezahlvorgang statt eigenem Zahlungsdienst

Bezahlt wurde bisher über einen selbst gebauten Dienst: rund 3.000 Zeilen für genau einen Anbieter, mit dem Zugangsgeheimnis im Protokoll und leeren Fehlerbehandlungen. Der gehostete Bezahlvorgang kostet weniger Gebühr, bringt Apple Pay und Google Pay mit und erzeugt die Rechnung mit Steuerausweis gleich mit. Die beiden Bezahlarten sind bei einem Impulskauf von knapp fünf Euro auf dem Handy der entscheidende Punkt. Der Preis dafür ist die Abhängigkeit von einem fremden Dienst.

ADR 0006

Kein Benutzerkonto für den Beschenkten

Erwogen war, für jeden Kalender ein Konto in einem eigenen Anmeldedienst anzulegen. Die Beschwerde aus der Praxis („man muss sich ständig neu einloggen“) lag aber nicht an der Identität, sondern an der Cookie-Laufzeit. Konten hätten sie nicht behoben, dafür aber Großeltern durch einen Anmeldeablauf geschickt, die nur ein Foto sehen wollen. Also habe ich die Laufzeit repariert und auf Konten verzichtet.

ADR 0009

Erst gestalten, dann zahlen

Die umgekehrte Reihenfolge wäre einfacher gewesen: keine unbezahlten Entwürfe, die Platz belegen und sich missbrauchen lassen. Wer aber 24 Fotos ausgesucht und Nachrichten dazu geschrieben hat, hat eine halbe Stunde investiert, und diese Arbeit ist das stärkste Kaufargument, das das Produkt hat. Hinter der Bezahlschranke wäre sie verschenkt. Die Entwürfe entstehen deshalb schon vor der Bezahlung auf dem Server und verfallen nach 30 Tagen.

Die ganze Seite in einem anderen Design

Gleiche Inhalte, andere Gestaltung. Es geht auf der Startseite los, alle Links bleiben im gewählten Design.

Was ist das? Über diese Seite →