Kreuztal
Scrollen
lagery.de

Wir hatten das Platzproblem selbst.

Herkunft

Vor Lagery haben wir Küchenartikel und Ordnungssysteme über Amazon FBA verkauft.

Bei FBA liegt der verkaufsfertige Bestand bei Amazon. Der Nachschub steht beim Händler, und bei uns stand er in einer angemieteten Halle in Hilchenbach, 142,5 Quadratmeter. Gebraucht haben wir davon knapp die Hälfte; die Ware ging im nächsten Schritt ohnehin an Amazon weiter. Bezahlt haben wir jeden Monat die ganze Halle.

Etwas Kleineres zu finden, hat nicht funktioniert. Auf den üblichen Gewerbeportalen standen ganze Einheiten, Teilflächen so gut wie nie, und was von der Größe her gepasst hätte, lag zu weit weg, um es regelmäßig anzufahren. Wir haben gesucht und sind in der zu großen Halle geblieben.

Dabei steht genug leer: Garagen, Scheunen, der halbe Gewerbepark am Ortsrand. Das Zeug ist nur nirgends gelistet, und wer es hat, vermietet es nicht in Portionen. Dem Nachbarn, der seinen Wohnwagen über den Winter unterstellen will, geht es damit genauso wie uns mit der Ware. An dem Punkt haben wir aufgehört, eine Halle zu suchen, und angefangen, die Software zu schreiben, mit der man beides findet.

Was wir bauen

Ein Marktplatz für Lagerraum und Stellplätze: vom Kellerabteil über die Garage bis zur Hallenfläche, von privat bis gewerblich und tageweise buchbar.

lagery.de besuchen

Das Handwerk

Wir haben Lagery selbst geschrieben, und wir betreiben es selbst.

  1. 194HTTP-Endpunkte
  2. 1.600+automatisierte Tests
  3. 30Datenbank-Migrationen

Anwendung

Backend
Python, FastAPI, SQLModel
Frontend
Next.js, React, TypeScript
Datenbank
PostgreSQL mit PostGIS
Schema
Alembic, jede Änderung wandert als Migration mit

Karte und Medien

Karte
MapLibre GL, im Browser gerendert
Kartendaten
PMTiles-Archiv auf eigenem Speicher
Objektspeicher
S3-kompatibel, Cloudflare R2
Bild-Uploads
serverseitig neu kodiert, Metadaten entfernt

Zahlung und Recht

Zahlungen
Stripe Connect
Rechnungen
eigene Nummernkreise, PDF serverseitig erzeugt
Stornierung
Fristen, Rückerstattung, Korrekturrechnung
Rechtstexte
versioniert, pro Buchung festgehalten

Konten und Betrieb

Passwörter
Argon2
Rate Limits
auf allen schreibenden Endpunkten
Monitoring
Prometheus, Grafana, OpenTelemetry, Sentry
Deployment
Docker, GitHub Actions

Vier Entscheidungen

Karten ohne Google

Die Karte rendert MapLibre im Browser, die Kartendaten liegen als PMTiles-Archiv auf unserem eigenen Objektspeicher. Wer bei uns sucht, holt sich keine Kachel von einem fremden Server. Über eine fremde Karten-API entscheidet jemand anders, was sie kostet, wie sie aussieht und ob sie morgen noch da ist. Und für eine eingebundene Karte muss man begründen, warum sie ohne Einwilligung lädt.

Das Geld läuft an uns vorbei

Zahlungen laufen über Stripe Connect. Der Mieter zahlt, der Betrag liegt beim Zahlungsdienstleister, der Anbieter bekommt ihn ausgezahlt. Auf ein Konto von uns kommt er nie. Das ist eine Aufsichtsfrage: Wer fremde Gelder verwahrt, braucht dafür eine Erlaubnis.

Jede Buchung weiß, welche AGB galten

AGB, Datenschutzerklärung und Widerrufsbelehrung sind versioniert. Zu jeder Buchung liegt fest, welche Fassung galt. Melden Backend und Frontend unterschiedliche Stände, bricht das Deployment ab. Ein eigener Schritt in der Pipeline vergleicht beide Seiten.

Nichts geht ungeprüft live

Jeder Push läuft durch dieselbe Pipeline: Schwachstellen-Audit der Abhängigkeiten auf beiden Seiten, Typprüfung, über 1.600 Tests, Browser-Smoketests — und ein Migrationslauf auf einer leeren SQLite- und einer echten PostGIS-Datenbank. Eine Migration, die nur auf dem eigenen Rechner durchläuft, kommt nicht durch.

Diese Seite

Für einen Prospekt reicht HTML.

Hier gibt es nichts anzumelden und nichts zu bezahlen, also läuft die Seite ohne Konto und ohne Sitzung. Kein Framework, kein Build-Schritt, keine Cookies und damit auch kein Einwilligungsdialog. Die Schriften liegen auf unserem Server, nicht bei Google. Beim Aufruf geht keine einzige Anfrage an einen fremden Host. Ohne JavaScript bleibt alles lesbar; das Skript bewegt nur das Logo.

Lagery ist der andere Fall: eine Anwendung mit Konten, Buchungen und Zahlungen. Sie kommt ohne Cookies nicht aus und holt deshalb eine Einwilligung ein, nach Kategorien getrennt und einzeln abwählbar. Die Rechtstexte dazu tragen Versionsnummern.

Eine Content-Security-Policy lässt ausschließlich Skripte von dieser Domain zu, HSTS erzwingt HTTPS, das Einbetten in fremde Rahmen ist gesperrt. Wo man Sicherheitslücken melden kann, steht in security.txt.

Der Beleg

Wer fremdes Geld bewegt, zeigt seine Papiere. Hier sind unsere.

Firma
BundS GmbH
Marburger Str. 17
57223 Kreuztal
Deutschland
Register
Amtsgericht Siegen
HRB 14185
Eingetragen am 10.03.2025
USt-IdNr. DE453665538
Vertretung
Seckin Hikmet Alkas
Geschäftsführer
einzelvertretungsberechtigt
Kontakt
+49 1567 9760223
info@bunds.eu
lagery.de