Zum Hauptinhalt springen
Referenzprojekt · Webentwicklung und E-Commerce

Referenzprojekt: eclipseando.com, eine Website und ein E-Commerce-Backend, in 19 Tagen von Grund auf gebaut

Eine eigene Website mit 8.132 Gemeindeseiten in sieben Sprachen, ein Shop mit Stripe und vier verschiedene Logistikdienstleister, angebunden per API, Webhook oder E-Mail. So ist es entstanden und das davon ist für Ihren Shop relevant.

Interaktive Karte von eclipseando.com mit dem Totalitätsstreifen über Spanien, der Gemeindesuche und den ein- und ausblendbaren Ebenen

Am 12. August 2026 gab es über Spanien eine totale Sonnenfinsternis. Am 24. Juli existierte eclipseando.com noch nicht: keine Domain, kein Design, keine einzige Zeile Code. Neunzehn Tage später war die Website online, mit einer Seite für jede Gemeinde Spaniens, einem Shop, der per Stripe kassierte, und einer Logistikkette, die Bestellungen bei vier verschiedenen Lieferanten auslöste. Wir erzählen das hier, weil es das Projekt ist, das am besten zeigt, wie wir arbeiten, wenn der Auftrag «eine Website und ein Backend von Grund auf» lautet, und weil jedes Teil in Produktion ist und besucht werden kann.

Kernaussage: Eine E-Commerce-Website ist keine Vorlage mit einem Bezahlbutton. Sie besteht aus dem Frontend, der Kasse, dem Datenspeicher und den Schnittstellen zu denen, die produzieren, und denen, die versenden. Bei eclipseando.com haben wir diese vier Schichten selbst geschrieben, und jede ist durch Tests abgesichert, die vor jeder Veröffentlichung laufen.

Der Auftrag: eine Website mit Verfallsdatum

Das Projekt gehörte uns, nicht einem Kunden, und gerade deshalb ist es ein ehrlicheres Beispiel: Es gab kein Budget, das man strecken konnte, und keinen verhandelbaren Termin. Das Datum bestimmte der Himmel. Die Anforderungen ergaben sich aus einer vorherigen Recherche und waren konkret: für jede Gemeinde Spaniens die Frage «Um wie viel Uhr und wie viel sehe ich von meinem Ort aus?» beantworten, geprüfte Brillen und nach Gemeinde personalisierte Andenken verkaufen und das Ganze auch auf Katalanisch, Englisch, Deutsch, Französisch, Italienisch und Portugiesisch anbieten, weil ein Teil des Publikums aus dem Ausland kam.

Shopify und WooCommerce haben wir vor dem Start ausgeschlossen. Nicht wegen des Preises, sondern weil das Schwierige an dem Projekt nicht der Shop war: Es waren die 8.132 berechneten Seiten, die Karte, die Wolkenprognose und logistische Integrationen, die keine Plattform serienmäßig mitbringt. Wenn der Wert in dem liegt, was nicht serienmäßig dabei ist, steht die Plattform mehr im Weg, als sie hilft. Dasselbe Kriterium wenden wir an, wenn uns ein Kunde fragt, ob er seine Website auf Odoo Website oder getrennt davon aufbauen soll.

Was gebaut wurde, Baustein für Baustein

BausteinWas er tutWomit er gebaut ist
Frontend8.132 Gemeindeseiten, Karte, Suche, Shop und Blog, in sieben Sprachen mit eigener URL pro Sprache.Statische Website, mit Astro generiert; von nginx auf einem eigenen Server ausgeliefert.
APIWarenkorb, Checkout, Auslieferung des digitalen Kits, Bestellungen bei Lieferanten, Sendungsverfolgung, Newsletter, Wolkenprognose pro Gemeinde, Analytik ohne Cookies und Verwaltungspanel.FastAPI in Python, Zustand in SQLite, 1.370 automatische Tests.
ZahlungStripe Checkout mit signiertem Webhook; der Preis wird immer auf dem Server berechnet, nie im Browser.Stripe-API; die Sprache des Bezahlvorgangs richtet sich nach dem Shop, in dem gekauft wird.
LogistikVier Lieferanten: zwei mit API, einer mit Dropshipping-API und einer ohne API, dem die Bestellung per E-Mail und CSV übermittelt wird.Eigene Integrationen, Auslesen des Postfachs des Zustellers und Benachrichtigungen an den Käufer.
Geplante AufgabenSieben Timer: Postfach, Warteschlangen, Wiederholversuche, Wolken, Fristen der Druckerei und Himmelsbericht.systemd-Units auf demselben Server.

Das Frontend: 8.132 Seiten, die berechnet statt geschrieben werden

Jede Gemeinde Spaniens hat ihre eigene Seite mit Beginnzeit, Maximum, Ende, Verdeckungsgrad und, im Totalitätsstreifen, den Sekunden der Dunkelheit. Diese Daten hat niemand geschrieben: Sie werden beim Generieren der Website aus den Elementen der Finsternis und den Koordinaten jeder Gemeinde berechnet, und ein Test gleicht eine Stichprobe der Ergebnisse mit denen ab, die das spanische Geografische Institut (Instituto Geográfico Nacional) veröffentlicht. Weicht die Berechnung ab, wird die Website nicht veröffentlicht. Neben Spanien gibt es Verzeichnisse für Portugal, Frankreich, Italien, Deutschland, Irland, Island, Grönland, Marokko, die Niederlande und das Vereinigte Königreich.

Die Mehrsprachigkeit ist echt und keine darübergelegte automatische Übersetzung: Jede Sprache hat ihren eigenen Pfad (/ca/, /en/, /de/…), ihre eigenen Texte und ihre eigenen Shopseiten, und Tests prüfen, dass die sieben Versionen jeder Vorlage existieren und aufeinander verweisen. Es ist dieselbe Regel, die wir auf flexigotech.com und pernocta.eu anwenden.

Das Backend: eine kleine API als Kasse, Lager und Verkaufstresen

Alles Statische liefert nginx aus. Das Dynamische hängt an /api/* und ist eine FastAPI-Anwendung mit dem Zustand in SQLite. Das klingt bescheiden, und das ist Absicht: Eine Person pflegt es, es läuft auf einem Server für wenige Euro und hat den Ansturm am Tag der Finsternis ohne jede Änderung verkraftet. Die wichtigen Entscheidungen stecken im Inneren:

  • Der Warenkorb wird auf dem Server bewertet. Der Browser speichert die Positionen, aber jeder Preis wird beim Erstellen der Zahlungssitzung gegen den aktuellen Katalog neu berechnet. Sonst öffnet jemand die Konsole und kauft ein Sweatshirt für einen Euro.
  • Der Stripe-Webhook entscheidet. Eine Zahlung gilt als eingegangen, wenn Stripe sie mit verifizierter Signatur bestätigt, nicht wenn der Browser zur Dankesseite zurückkehrt. Schlägt beim Kassieren die Bestellung beim Lieferanten fehl, antwortet die API mit einem Fehler, damit Stripe es erneut versucht, und eine Tabelle mit der Sitzungskennung verhindert, dass doppelt produziert wird.
  • Das digitale Produkt wird über einen signierten Link ausgeliefert (HMAC, läuft nach 72 Stunden ab, höchstens fünf Downloads), und das Kontrollkästchen zum Verzicht auf das Widerrufsrecht ist vor dem Bezahlen Pflicht: Die API lehnt den Checkout des Kits ab, wenn es nicht angehakt ist.
  • E-Mails gehen nicht verloren. Jede Bestätigung läuft über Brevo; antwortet Brevo nicht, landet sie in einer Warteschlange in SQLite, die ein Timer alle fünfzehn Minuten leert. Ein Käufer ohne Bestätigungs-E-Mail ist eine Reklamation, deshalb gibt es bei dieser Regel keine Ausnahmen.

Die Logistikschnittstellen: vier Lieferanten, vier Arten der Kommunikation

Hier liegt der Teil, der dem am meisten ähnelt, was Kunden bei uns anfragen. Der Shop verkaufte Dinge, die von unterschiedlichen Orten ausgeliefert wurden, und jeder Ort kommunizierte auf seine Weise:

  • Eine Druckerei mit API und Webhook. Beim Kassieren erzeugt die API die Druckdatei (eine SVG-Vorlage mit Gemeindename, Uhrzeit und Dauer, mit 300 ppp gerastert), legt die Bestellung an und wartet auf den Webhook «versendet», um dem Käufer seine Sendungsverfolgung zu schicken.
  • Eine zweite Druckerei mit Produktionsstätte in Barcelona für die Kleidung, weil die erste keine Textilien in Spanien fertigte und die Lieferzeit nicht reichte. Vor der Entscheidung wurden beide APIs mit echten Bestellungen gemessen; die Tasse blieb bei der ersten, weil diese sie hier fertigte.
  • Ein Brillenhersteller mit Dropshipping-API, der nach Spanien, Frankreich, Deutschland, ins Vereinigte Königreich und nach Portugal liefert. Die Bestellung wird beim Kassieren automatisch angelegt, und vor dem Kassieren wird die tatsächliche Verfügbarkeit pro Land abgefragt.
  • Ein Distributor ohne API. Er versendet die Brillen innerhalb von 24 bis 48 Stunden auf dem Festland und den Balearen, aber die Bestellung wird ihm per E-Mail übermittelt. Das Panel erzeugt mit einem Klick genau das, was er braucht: Empfänger, Adresse, Telefon, Artikel und Menge, als Text und als angehängte CSV-Datei. Und da seine Sendungen mit GLS rausgehen, liest die API alle zehn Minuten das Postfach, klassifiziert die E-Mails des Zustellers (unterwegs, in der Abholstation mit Abholfrist, Empfänger nicht angetroffen) und benachrichtigt den Käufer bei jeder einzelnen.

Eine Folge, die klein wirkt und es nicht ist: Eine Bestellung mit Brillen und einem T-Shirt sind zwei Pakete von zwei Lieferanten. Deshalb liegt die Sendungsverfolgung pro Sendung und nicht pro Bestellung, mit einer Zeile für jedes Paar aus Bestellung und Lieferant. Ein einzelnes Feld «Sendungsnummer» hätte funktioniert, bis zum ersten Kunden, der beides kauft.

Lieferzeiten werden gemessen, nicht versprochen

Die Angebots-API der Druckerei antwortete für alles «Standardlieferung, 5-10 Tage», auch für Produkte, die sie bei der echten Bestellung dann ablehnte. Wir haben es durch einen Verkauf entdeckt, der nicht geliefert werden konnte. Seitdem legt ein Timer jede Nacht für jede Kombination aus Produkt und Land eine Entwurfsbestellung an, liest den Zusteller und die tatsächlichen Tage aus, die die Druckerei zurückgibt, und löscht sie wieder. Diese Zahlen, nicht die der Dokumentation, sieht der Käufer auf der Produktseite, bevor er bezahlt. Es ist dieselbe Lehre, die wir auf Odoo-Konnektoren anwenden: Ein grüner Test gegen einen Mock beweist nichts; man muss am echten System messen.

Was von allein läuft

Sieben systemd-Units erledigen, was in einem kleinen Shop sonst jemand von Hand macht: alle zehn Minuten das Postfach des Zustellers lesen, alle fünfzehn die E-Mail-Warteschlangen leeren und bezahlte, aber nicht produzierte Bestellungen erneut versuchen, alle drei Stunden die Wolkenprognose der AEMET für die meistgesuchten Gemeinden aktualisieren und täglich die Lieferzeiten der Druckerei messen. Keine davon ruft im Verlauf einer Webanfrage einen externen Dienst auf: Die Seiten lesen aus dem Cache, und ein Test stellt das sicher.

Was davon für Ihren Shop taugt

Fast alles, wenn man die Finsternis durch Ihren Katalog ersetzt. Was ein Kunde von uns verlangt, wenn er sagt «Ich möchte eine E-Commerce-Website von Grund auf», ist genau diese Liste: ein schnelles, mehrsprachiges Frontend, eine Kasse, die sich nicht austricksen lässt, Integrationen mit denen, die produzieren, und denen, die versenden, eine Sendungsverfolgung, die den Kunden erreicht, ohne dass jemand sie von Hand kopiert, und Aufgaben, die von allein laufen. Hat der Kunde bereits Odoo, ersetzt das ERP selbst diese API, und die Integrationen sind Zusteller-Konnektoren innerhalb von Odoo; hat er es nicht oder passt sein Geschäft nicht in ein ERP, wird es gebaut wie hier.

Häufige Fragen

Warum wurde es nicht mit Shopify oder WooCommerce gemacht?

Weil das Schwierige nicht der Shop war, sondern das, was ihn umgab: 8.132 berechnete Seiten, eine eigene Karte, Wetterprognose und vier verschiedene Logistikintegrationen. Wenn der Wert in dem liegt, was die Plattform nicht mitbringt, ist die Plattform ein Fixkostenblock, der zusätzlich einschränkt. Der Shop selbst, mit Stripe Checkout, war nur ein kleiner Teil der Arbeit.

Wie bindet man einen Lieferanten ohne API an?

Indem man die menschliche Arbeit auf einen Klick reduziert und automatisiert, was über einen lesbaren Kanal ankommt. Bei eclipseando.com verlässt die Bestellung an den Brillen-Distributor das Panel als Text und CSV, bereit zum Einfügen in eine E-Mail, und die Meldungen des Zustellers werden alle zehn Minuten aus dem Postfach gelesen und in Status und E-Mails an den Käufer umgesetzt.

Lässt sich dasselbe auf Odoo umsetzen?

Ja, und es ist der übliche Weg, wenn der Kunde das ERP bereits hat: Das Frontend wird mit Odoo verbunden, Warenkorb und Bestellung liegen im Verkauf, und die Zusteller kommen über im App Store von Odoo veröffentlichte Konnektoren hinein. Getrennt gebaut wird, wenn es kein Odoo gibt oder wenn der Kern des Geschäfts, wie hier, kein Katalog ist, sondern eine Berechnung.

Nützliche Links bei FlexigoTech

IndividualentwicklungWebsites, Backends und Odoo-Module, von Grund auf programmiertWebentwicklung: unsere Projekte in Produktioneclipseando.com, pernocta.eu und clentic.comLogistikintegration in OdooZusteller, Etiketten und Sendungsverfolgung im ERPEinen Online-Shop von Grund auf entwickeln, mit LogistikanbindungDie fünf Schichten und in welcher Reihenfolge sie gebaut werden

Was wir dazu anbieten

Webentwicklung und E-CommerceWas sie leistet, Screenshots, Versionen und Preis.

Brauchen Sie eine Website oder einen Shop von Grund auf, mit angebundener Logistik?

Erzählen Sie uns, was Sie verkaufen, wer es herstellt und wer es versendet. Wir sagen Ihnen, was gebaut wird, was per API integriert wird und was gar nicht programmiert werden muss. Schreiben Sie an comercial@flexigobe.com oder rufen Sie an unter +34 616 809 504.

Mit einem Ingenieur sprechen