Zum Hauptinhalt springen
Webentwicklung und E-Commerce · Leitfaden

E-Commerce von Grund auf entwickeln, mit Logistikanbindung: die fünf Schichten und die Reihenfolge ihres Aufbaus

Frontend, Kasse, Daten, Lieferanten und Aufgaben, die von selbst laufen. Was jede Schicht enthält, was per API angebunden wird und was nicht, und warum die Reihenfolge des Aufbaus entscheidet, ob sich der Shop später warten lässt.

Produktiver Onlineshop auf einem Laptop und einem Smartphone

«Ich möchte einen Onlineshop von Grund auf neu» heißt meist «Ich möchte einen Shop, der das kann, was Vorlagen nicht können». Und was Vorlagen nicht können, ist fast immer dasselbe: mit dem Hersteller, dem Versender und dem Zahlungsdienst zu sprechen, ohne dass jemand Daten von einem Bildschirm auf den anderen abtippt. Dieser Artikel erklärt, wie wir diese Arbeit in fünf Schichten gliedern, was jede enthält und in welcher Reihenfolge sie gebaut werden. Die Beispiele stammen von eclipseando.com, einem eigenen Shop von uns im Produktivbetrieb, und von den Zusteller-Konnektoren, die wir für Odoo veröffentlicht haben.

Kerngedanke: Das Frontend ist die sichtbarste und zugleich die am wenigsten riskante Schicht. Geld geht in den drei mittleren verloren: bei einer Kasse, die sich austricksen lässt, bei Daten, die an zwei Orten liegen, und bei einem Lieferanten, dem Bestellungen von Hand weitergegeben werden. Gebaut wird von innen nach außen.

Die fünf Schichten eines Shops

SchichtWas sie enthältTypischer Fehler, wenn man sie überspringt
1 · DatenKatalog, Preise, Bestand, Aufträge, Kunden. Eine einzige verlässliche Datenquelle.Der Preis im Web und der Preis im ERP laufen nach zwei Monaten auseinander.
2 · KasseWarenkorb, Preis- und Versandberechnung, Zahlungsgateway, Zahlungsbestätigung per Webhook.Man verlässt sich auf die Dankeseite und bereitet eine Bestellung vor, die nie bezahlt wurde.
3 · LieferantenHersteller, Lager, Zusteller: Ausgangsbestellung, Etikett, Sendungsverfolgung, Störfälle.Die Sendungsverfolgung wird von Hand kopiert und erreicht den Kunden, wenn überhaupt, einen Tag zu spät.
4 · Geplante AufgabenWarteschlangen, Wiederholversuche, Postfachabruf, Bestandsabgleich, Erinnerungen.Eine E-Mail, die in einer Nacht fehlschlägt, geht für immer verloren.
5 · FrontendSeiten, Produktseiten, Suche, Sprachen, Geschwindigkeit, SEO.Man fängt hier an, zeigt etwas Schönes, und die anderen vier werden danach improvisiert.

Schicht 1: Die Daten liegen an einem einzigen Ort

Bevor man einen Bildschirm entwirft, muss feststehen, wo der Katalog liegt. Hat der Kunde Odoo, lautet die Antwort Odoo: Produkte, Preise, Bestand und Aufträge sind dort, und die Website liest sie, statt sie zu kopieren. Hat er es nicht, braucht der Shop eine eigene Datenbank, und sie sollte klein und unspektakulär sein. Bei eclipseando.com ist es SQLite, in einer Datei, mit Datensicherung. Es darf nicht passieren, dass der Preis auf der Website, in einer Tabellenkalkulation und im ERP steht: Nach zwei Monaten sind es drei verschiedene Preise.

Schicht 2: Die Kasse vertraut dem Browser nicht

Zwei Regeln, über die wir nicht verhandeln. Erstens: Der Preis wird auf dem Server berechnet, mit dem aktuellen Katalog, in dem Moment, in dem die Zahlungssitzung erstellt wird. Der Browser darf den Warenkorb speichern, aber nicht bestimmen, was er kostet. Zweitens: Eine Bestellung gilt als bezahlt, wenn das Gateway sie per signiertem Webhook bestätigt, nicht wenn der Kunde auf der Dankeseite landet. Bei Stripe ist das checkout.session.completed mit verifizierter Signatur; andere Gateways nennen es anders, die Idee ist dieselbe. Und schlägt beim Eingang des Webhooks der nächste Schritt fehl, antwortet man mit einem Fehler, damit das Gateway es erneut versucht, und speichert die Sitzungs-ID, um nichts doppelt zu fertigen.

Schicht 3: Jeder Lieferant spricht so, wie er kann

Hier hört «Logistikanbindung» auf, ein Schlagwort zu sein, und wird zur Arbeit. Ein Lieferant mit API und Webhook (eine Druckerei auf Abruf, ein großer Zusteller) wird in beide Richtungen angebunden: Beim Bezahlen wird ihm die Bestellung angelegt, und seine Meldung «versendet» wird abgehört, um die Sendungsverfolgung an den Kunden weiterzugeben. Einer mit Dropshipping-API wird in eine Richtung angebunden und in der anderen abgefragt: vor dem Bezahlen die tatsächliche Verfügbarkeit pro Land, danach die Bestellung. Und einer ohne API, von denen es viele gibt, wird angebunden, indem die menschliche Arbeit auf einen Klick reduziert wird: Das System erzeugt genau die E-Mail oder CSV-Datei, die der Lieferant braucht, und wenn seine Pakete mit einem Zusteller versendet werden, der E-Mails schickt, werden diese E-Mails gelesen und in Status umgewandelt.

Zwei Details, die man nur mit echten Bestellungen lernt. Erstens: Die Sendungsverfolgung läuft pro Sendung, nicht pro Bestellung, denn eine Bestellung mit zwei Produkten von zwei Lieferanten sind zwei Pakete. Zweitens: Die Lieferzeiten aus der Dokumentation des Lieferanten sind nicht die, die er einhält; man misst sie, indem man Testbestellungen anlegt und liest, was zurückkommt, und genau diese Zeiten zeigt man dem Kunden vor der Zahlung. Ist der Lieferant ein Zusteller und der Shop läuft mit Odoo, ist all das in den von uns veröffentlichten Zusteller-Konnektoren bereits gelöst: Etikett, Sendungsverfolgung, Manifest und Retoure direkt im Lieferschein.

Versandansicht in Odoo mit dem Zusteller, dem erzeugten Etikett und der Sendungsverfolgungsnummer
Mit Odoo im Hintergrund ist Schicht 3 der Lieferschein: Etikett, Sendungsverfolgung und Status im selben Dokument, ohne etwas zu kopieren.

Schicht 4: Was von selbst läuft und was wiederholt wird

Ein Shop hat Arbeiten, die nicht davon abhängen dürfen, dass jemand daran denkt: die E-Mail-Warteschlange leeren, bezahlte Bestellungen erneut senden, die nie beim Lieferanten ankamen, das Postfach des Zustellers lesen, den Bestand mit Marktplätzen abgleichen. Jede davon ist eine geplante Aufgabe mit Intervall und Protokoll. Die Entwurfsregel lautet, dass keine von ihnen im Pfad einer Benutzeranfrage einen externen Dienst aufruft: Die Seite liest, was die Aufgabe im Cache hinterlassen hat. Fällt der Lieferant um drei Uhr nachts aus, liefert der Shop so weiter Seiten aus, und die Bestellungen werden erneut versucht, sobald er zurück ist.

Schicht 5: Das Frontend, am Ende und schnell

Sind die vier unteren Schichten gelöst, ist das Frontend der dankbarste Teil. Wir bevorzugen statische Seiten, die beim Build erzeugt und von nginx oder Caddy ausgeliefert werden (Astro bei eclipseando.com): Sie laden blitzschnell, haben keine Datenbank, die man angreifen könnte, und kosten so viel wie ein kleiner Server. Das Dynamische (Warenkorb, Zahlung, Bestellstatus) läuft über eine separate API. Mehrsprachigkeit wird mit einer URL pro Sprache und eigenen Texten umgesetzt, nicht mit einem automatischen Übersetzer obendrauf, und mit Tests abgesichert, die prüfen, dass jede Vorlage in allen Sprachen existiert. Und die Geschwindigkeit wird vor der Veröffentlichung gemessen: Seitengewicht, Bilder in der Größe, in der sie dargestellt werden, nichts, was das erste Rendering blockiert.

Die Reihenfolge zählt: von innen nach außen

Der teuerste Fehler, den wir sehen, ist, mit Schicht 5 anzufangen. In der zweiten Woche wird eine schöne Website gezeigt, der Kunde freut sich, und die Schichten 1 bis 4 werden darunter in Eile improvisiert. Das Ergebnis funktioniert bis zur ersten Bestellung mit zwei Lieferanten oder bis zum ersten verlorenen Webhook. Wir bauen umgekehrt: zuerst Daten und Kasse mit ihren Tests, dann die Anbindungen mit echten Testbestellungen, dann die geplanten Aufgaben, und das Frontend zuletzt, wenn genau feststeht, was es zeigen muss. Es dauert genauso lang. Man muss deutlich weniger neu machen.

Häufige Fragen

Wann lohnt es sich, den Shop von Grund auf zu entwickeln, statt Shopify oder Odoo Website zu nutzen?

Wenn der Wert in dem liegt, was die Plattform nicht mitbringt: eine eigene Berechnung, Anbindungen an Lieferanten ohne Konnektor, ein Katalog, der kein Katalog ist. Ist Ihr Shop ein normaler Katalog mit einem normalen Zusteller, ist eine Plattform günstiger und die richtige Antwort. Wir führen das in wann man die Website auf Odoo Website baut und wann nicht aus.

Was ist mit einem Lieferanten ohne API?

Er wird trotzdem angebunden, über einen anderen Kanal: Das System erzeugt per Klick genau die E-Mail oder CSV-Datei, die er braucht, und liest, was der Lieferant oder sein Zusteller per E-Mail zurückschickt. Das ist nicht so sauber wie eine API, aber es beseitigt das manuelle Kopieren, und dort passieren die Fehler.

Und wenn ich schon Odoo habe?

Dann gibt es die Schichten 1, 3 und 4 größtenteils schon: Katalog und Aufträge liegen in Odoo, die Zusteller kommen über veröffentlichte Konnektoren herein, und die geplanten Aufgaben sind die Crons des ERP selbst. Gebaut werden das Frontend und, falls nötig, eine individuelle Kasse, die mit dem Verkauf verbunden ist.

Nützliche Links bei FlexigoTech

Erfolgsgeschichte: eclipseando.comDie fünf Schichten, wirklich gebaut in 19 TagenIndividualentwicklungWas geliefert wird, unter welcher Lizenz und mit welchem AbnahmekriteriumLogistik in OdooZusteller-Konnektoren, veröffentlicht und getestet in Odoo 19, 18 und 17Die API eines Zustellers in eine eigene Website einbindenEtikett, Sendungsverfolgung und Benachrichtigungen, Schritt für Schritt

Was wir dazu machen

LogistikanbindungWas sie leistet, Screenshots, Versionen und Preis.

Haben Sie einen Shop im Kopf, der in keine Vorlage passt?

Erzählen Sie uns, was Sie verkaufen, wer es herstellt und wer es versendet. Wir schicken Ihnen die fünf Schichten zurück, mit dem, was in jede gehört, und in welcher Reihenfolge. Schreiben Sie an comercial@flexigobe.com oder rufen Sie an unter +34 616 809 504.

Mit einem Ingenieur sprechen