Zum Inhalt springen
megapromotingLassen Sie uns sprechen

Lösungen · Restaurants & HoReCa

Ein QR-Code-Menü, das auf dem Telefon, im Halbdunkel, in drei Sprachen gelesen wird — und das keinen einzigen Cookie setzt.

Das Menü eines Lokals ist keine Broschüre: Es hat Preise und Volumen, die genau sein müssen, ändert sich oft und wird von Menschen gelesen, die drei Sprachen sprechen. Wir bauen das Menü als Daten, erzeugen die Seite daraus und prüfen vor jeder Veröffentlichung, einschließlich dass die Preise in jeder Kategorie absteigen und dass jedes Foto vorhanden ist.

Bereits gebautDouă meniuri digitale în producție, verificabile din exterior azi. Primul: 119 produse în 21 de categorii, cu preț, volum, compoziție și fotografie, plus câte un text scurt de prezentare și un set de recomandări de asociere pentru fiecare produs; generatorul are 402 linii, iar verificarea dinaintea publicării are 233 de linii și 16 blocuri. Al doilea, site-ul-soră cu același motor: 146 de produse în 31 de categorii, generator de 377 de linii, verificare de 210 linii cu 14 blocuri, iar integrarea continuă regenerează pagina din surse și respinge modificarea dacă rezultatul diferă de fișierul din depozit. Ambele răspund 200 și niciunul nu pune vreun cookie — verificat de mine pe 06.09.2026. Spunem și că sunt două lucrări cu același motor și același proprietar, nu două lucrări independente.

Eine gescannte PDF auf einem QR-Code löst nichts von dem, was ein Lokal lösen muss. Man kann nicht darin suchen, nicht übersetzen, auf dem Telefon nicht vernünftig vergrößern und nichts ändern, ohne den Code neu zu drucken. Und das Menü ändert sich oft: Die Küche streicht ein Gericht, die Bar bekommt eine andere Marke, der Preis einer Position steigt. Das Menü ist ein wöchentlich veränderlicher Datensatz, kein einmal gedrucktes Dokument.

Deshalb behandeln wir es als Daten. Die echten Quellen sind einige strukturierte Dateien — Produkte, Präsentationstexte, Kombinations­empfehlungen, Übersetzungen — und ein in Python geschriebenes Generator-Programm erstellt daraus eine einzige Seite. In einem der Lokale: 119 Produkte in 21 Kategorien, jeweils mit Preis, Volumen, Zusammensetzung und Foto, plus 119 kurze Texte und 119 Sätze mit „womit es passt“. Im anderen: 146 Produkte in 31 Kategorien. Die Seite wird nicht direkt bearbeitet — sie wird neu generiert.

Die Übersetzung endet nicht bei den Buttons. Rumänisch ist die Basis, und Russisch sowie Englisch decken die Kategorien, Bezeichnungen, Volumen, Zusammensetzungen, die 82 Geschmacksmarkierungen und alle Präsentationstexte ab. In einer Stadt, in der der Tisch nebenan in einer anderen Sprache bestellt, ist ein halb übersetztes Menü ärgerlicher als ein unübersetztes: Es lässt Sie glauben, dass Sie alles lesen können.

Der Teil, den wir für den wichtigsten halten und den niemand im Briefing verlangt: Warenkorb, Favoritenliste und Aufteilung der Rechnung laufen im Browser, ohne Konto und ohne Server, und die Website setzt keine Cookies und verlangt nichts von einer Dritt-Domain. Das ist kein Versprechen aus der Datenschutzrichtlinie — es ist eine Regel, die von automatisierten Prüfungen auferlegt wird, die vor jeder Veröffentlichung laufen und die Änderung ablehnen, wenn irgendein Tracker, irgendeine externe Ressource oder irgendeine von jemand anderem bezogene Schrift aufgetaucht ist.

Was dazugehört

Was sich konkret in Restaurants & Horeca ändert

Das Menü ist ein Datensatz, und die Seite wird daraus generiert

Produkte, Präsentationstexte, Empfehlungen und Übersetzungen liegen in strukturierten Dateien; ein in Python geschriebener Generator — 402 Zeilen in einem lokalen, 377 in dem anderen — setzt daraus eine einzige Seite zusammen. Die veröffentlichte Seite wird nicht von Hand bearbeitet; wenn jemand es tut, erfasst es die kontinuierliche Integration, weil sie die Seite neu generiert und das Ergebnis vergleicht.

Jede Position hat Preis, Volumen, Zusammensetzung und Foto

In einer Bar ist das Volumen Teil des Preises: dieselbe Bezeichnung bei 40 und bei 100 Millilitern sind zwei verschiedene Produkte, und der Kunde, der das Volumen nicht sieht, glaubt, dass ihm etwas anderes gesagt wurde. Die Datenstruktur hält alle vier Felder als obligatorisch, nicht als optional, gerade damit eine unvollständige Position nicht auf den Tisch gelangt.

Drei Sprachen, bis zum letzten Geschmackslabel

Die Übersetzung deckt die Oberfläche, die Kategorien, die Bezeichnungen, die Volumina, die Zusammensetzungen, die 82 Geschmackslabels und alle kurzen Präsentationstexte ab, wobei jeder rumänischen Schlüssel ihr Pendant auf Russisch und Englisch hat. Eine der Prüfungen vor der Veröffentlichung schlägt fehl, wenn das Menü nicht in allen drei Sprachen vollständig ist.

Der Warenkorb, die Favoriten und das Teilen der Rechnung laufen im Browser

Ohne Konto, ohne Server, ohne Daten, die irgendwohin gesendet werden. Der Kunde stellt seine Bestellung auf dem Telefon zusammen und zeigt sie dem Kellner oder nutzt sie beim Teilen der Rechnung. Die technische Folge: Es gibt keine Datenbank mit dem, was Ihre Kunden bestellt haben, weil keine erstellt wird.

Null Cookies und nichts von Drittdomains

Von außen überprüft: kein Cookie-Header auf keiner der beiden Seiten, und die Content-Security-Policy einer von ihnen erlaubt absolut nichts von außen. Die Schriftarten werden auf derselben Domain gehostet, nicht bei einem externen Dienst. Die einzigen externen Adressen auf der Seite sind die Links zu den sozialen Netzwerken des Lokals — auf die der Besucher klickt, die die Seite aber nicht aufruft.

Prüfungen vor jeder Veröffentlichung, auch die langweiligen

Sechzehn Prüfblöcke in einem Lokal, vierzehn in dem anderen: keine Tracker, keine automatisch von Dritten geladenen Ressourcen, selbst gehostete Schriftarten, gültige strukturierte Dateien, jedes Foto ist vorhanden, das Menü ist in drei Sprachen vollständig, die strukturierten Daten auf der Seite sind gültig und — die, die alle überrascht — die Preise sind in jeder Kategorie absteigend. Ein falsch eingegebener Preis zeigt sich als Bruch in der Reihenfolge der Liste, nicht bei der Beschwerde des Kunden.

Die veröffentlichte Seite entspricht immer den Quellen

Bei jeder Änderung generiert die kontinuierliche Integration die Seite aus den Quellen neu und lehnt die Änderung ab, wenn das Ergebnis von der Datei im Repository abweicht. Es ist die einzige wirkliche Garantie dafür, dass das, was auf dem Bildschirm des Kunden steht, aus den Daten stammt, die das Lokal bearbeitet, und nicht aus einem dort vor drei Monaten vergessenem manuellen Eingriff.

Die Serverprotokolle speichern keine vollständigen IP-Adressen

In der Serverkonfiguration eines der Lokale: Maskierung der IP-Adressen, aus den Protokollen gelöschte Identifikationsheader und begrenzte Aufbewahrung, mit ausdrücklichem Verweis auf das Prinzip der Speicherbegrenzung. Die kontinuierliche Integration verweigert die Änderung, wenn diese Zeilen aus der Konfiguration verschwinden — also kann der Schutz bei einem Serverwechsel nicht stillschweigend verloren gehen.

Was ein digitales Menü nicht macht

Es nimmt die Bestellung nicht in der Küche entgegen und bestätigt keine Reservierung: Dafür ist eine Verbindung zum System des Lokals erforderlich, was ein separates Vorhaben ist. Und wir veröffentlichen keine Funktionen, die etwas versprechen, das an der Kasse eingehalten werden muss — ein Rabatt vom Typ „happy hour“ oder ein Küchenplan werden nicht ohne schriftliche Zustimmung des Lokals gestartet, denn wer für das Versprechen auf dem Bildschirm zahlt, ist der Mensch an der Theke.

Traseul

Wie eine Anfrage durch das System läuft.

01

Wir strukturieren das Menü, bevor wir irgendetwas zeichnen

Die erste Lieferung ist das Menü als Daten: Kategorien, Positionen, Preis, Volumen, Zusammensetzung, Foto. Hier werden auch die Lücken sichtbar — Positionen ohne Volumen, Kategorien, die in Wirklichkeit zwei sind, Produkte ohne Foto. Ein digitales Menü, das auf unvollständigen Daten aufbaut, wirkt unvollständig, egal wie gut das Design ist.

02

Wir übersetzen alles, nicht nur die Oberfläche

Die Kategorien, Bezeichnungen, Volumina, Zusammensetzungen, Geschmacksetiketten und Präsentationstexte erhalten ihre Entsprechungen auf Russisch und Englisch. Wir liefern das vollständige Menü in drei Sprachen und die automatische Prüfung, die fehlschlägt, wenn ein Schlüssel unübersetzt bleibt.

03

Wir setzen die Prüfungen vor der ersten Veröffentlichung

Keine Tracker, keine Ressourcen von Dritten, selbst gehostete Schriftarten, gültige Dateien, jedes Foto vorhanden, Preise pro Kategorie in absteigender Reihenfolge, gültige strukturierte Daten. Wir liefern das Prüfskript im Repository, damit das Lokal es auch ohne uns ausführen kann.

04

Automatische Veröffentlichung aus dem Repository, mit Kopie der vorherigen Version

Die Veröffentlichung erfolgt bei der Zusammenführung der Änderung, nachdem die kontinuierliche Integration die Seite neu generiert und mit den Quellen verglichen hat und nachdem eine Kopie der vorherigen Version gespeichert wurde. Wir liefern die Zugänge und das Rollback-Verfahren — nicht nur die gestartete Website.

1Fișiere de date(produse, texte,asocieri, traduceri)2generator Python3o singură pagină416 verificări(urmăritori, terți,fonturi, fotografii,trei limbi, prețuridescrescătoare)5publicare automată,cu copie a versiuniianterioare
Traseul, în 5 pași

Die Daten

Was wir anfassen, wo die Daten liegen und wie lange sie bleiben

Die Regeln unterscheiden sich von Branche zu Branche. Dies sind die, die in Restaurants & HoReCa gelten.

Es wird nichts über den Kunden gesammelt
Kein Konto, kein Cookie, kein Tracker, keine von Drittdomains angeforderten Ressourcen. Warenkorb und Favoriten leben im Browser des Besuchers. Bei uns und auch beim Lokal gibt es keine Liste dessen, was jemand im Menü angesehen hat — nicht weil wir sie gelöscht haben, sondern weil sie nicht erstellt wird.
Was in den Server-Logs bleibt
Die üblichen Anfragen eines Webservers, mit maskierter IP-Adresse, ohne Identifikations-Header, für einen begrenzten Zeitraum aufbewahrt. Sie sind in der Serverkonfiguration festgelegt, automatisch geprüft und mit dem Grundsatz der Speicherbegrenzung begründet — nicht bei den Standardwerten des Programms belassen.
Das Menü, die Preise, die Rezepte und die Fotos gehören dem Lokal
Wir bauen die Struktur, den Generator und die Prüfungen. Der Inhalt gehört ihm und wird auf seine Entscheidung hin geändert. Wir veröffentlichen in unseren Materialien keine einzige Preiszahl als Beispiel, auch nicht illustrativ.
Was passiert, wenn das Lokal auch einen Assistenten auf der Seite will
Das ist möglich, aber dann muss die Content-Security-Policy der Seite genau diese Domain und nichts anderes erlauben. Auf einer der beiden Websites ist das von außen sichtbar: Die Richtlinie erlaubt nur eine externe Domain, die des Assistenten. Der Unterschied zwischen „wir erlauben eine Domain“ und „wir erlauben alles“ ist die ganze Diskussion über Tracking.
Reservierungsdaten, falls sie auftreten, ändern die Regeln
Sobald das Menü ein Reservierungsformular erhält, erscheinen Name, Telefon und Uhrzeit — also personenbezogene Daten, mit Aufbewahrungsfrist, mit einem Ort, an den sie gelangen, und mit jemandem, der sie sieht. Dann wird auch die veröffentlichte Richtlinie des Lokals geschrieben. Bis dahin ist das Menü eine Seite, die nichts sammelt, und es ist einfacher, es so zu belassen, wenn Reservierungen telefonisch erfolgen.

Ein Fall

Eine Prüfung, die verlangt, dass die Preise in jeder Kategorie absteigen

Die Ausgangslage

In einem Menü mit über hundert Positionen ist der häufigste Fehler nicht beim Design, sondern beim Tippen: eine zusätzliche Ziffer bei einem Preis oder eine Position ohne Foto. Beides wird normalerweise entdeckt, wenn der Kunde es dem Kellner zeigt.

Was wir gebaut haben

Vor der Veröffentlichung haben wir ein Prüfskript eingesetzt — 233 Zeilen in einem Lokal, 210 im anderen — das sechzehn bzw. vierzehn Blöcke ausführt: dass kein Tracker eingeschleust wurde, dass die Seite nichts von einer Dritt-Domain anfordert, dass die Schriftarten lokal gehostet sind, dass die Datendateien gültig sind und jedes Foto vorhanden ist, dass das Menü in allen drei Sprachen vollständig ist, dass die strukturierten Daten auf der Seite gültig sind und dass die Preise in jeder Kategorie absteigen. Separat regeneriert die kontinuierliche Integration die Seite bei jeder Änderung aus den Quellen und lehnt sie ab, wenn das Ergebnis vom veröffentlichten File abweicht.

Was dabei herauskam

Ein Tippfehler beim Preis bricht die absteigende Reihenfolge und stoppt die Veröffentlichung, und ein fehlendes Foto erscheint nie auf dem Bildschirm am Tisch. Die veröffentlichte Seite entspricht immer den Daten, die das Lokal lokal bearbeitet, denn sonst wird sie nicht veröffentlicht.

Was der Fall nicht sagt

Die Prüfungen erfassen, was sich mechanisch prüfen lässt. Ein falsch eingegebener, aber plausibler Preis — und in der richtigen Reihenfolge — kommt durch; dafür gibt es keinen anderen Mechanismus, als dass jemand hinschaut. Die Dokumentation eines der Projekte sagt „14 Prüfungen“, während das Skript 16 Blöcke hat; die richtige Zahl ist die aus dem Skript.

Fragen

Was jemand aus Restaurants & horeca fragt

Können wir die Preise selbst ändern und ein Gericht aus dem Menü entfernen?

Ja. Die Daten werden bearbeitet, nicht die Seite; die Seite wird aus ihnen neu erzeugt. Die kontinuierliche Integration prüft die Neuerzeugung bei jeder Änderung und lehnt die Änderung ab, wenn die veröffentlichte Seite den Quellen nicht mehr entspricht. So gibt es nicht das Szenario, in dem jemand einen Preis direkt auf der Seite korrigiert hat und die Änderung bei der nächsten Veröffentlichung verschwunden ist.

Warum ist es wichtig, dass Sie keine Cookies setzen?

Weil ein Menü, das nichts sammelt, kein Zustimmungsbanner braucht, nichts auslaufen lassen kann und einem Kontrolleur nichts zu erklären hat. Die Prüfung ist für jeden leicht nachzuvollziehen: Eine einzige Anfrage an die Seite zeigt, dass kein Cookie-Header zurückkommt. Und die Content-Security-Policy eines der Lokale erlaubt absolut keine Ressource von außen.

Kann das Menü die Bestellung aufnehmen?

Der Warenkorb funktioniert im Browser, als Liste, die der Kunde dem Kellner zeigt oder für das Aufteilen der Rechnung benutzt. Das Senden der Bestellung in die Küche erfordert eine Verbindung zum System des Lokals und ist eine separate Arbeit, mit Kompatibilitätsprüfung im Voraus. Wir nennen einen Warenkorb, der nirgendwohin gelangt, nicht „Online-Bestellung“.

Können wir „happy hour“ oder ein Abendangebot setzen?

Das kann aufgebaut werden, aber wir starten es nicht ohne schriftliche Zustimmung des Lokals, weil es ein Versprechen ist, das an der Kasse eingelöst wird. Unsere Regel: Funktionen, die das Lokal gegenüber dem Kunden verpflichten — Rabatte, Küchenzeiten, Verfügbarkeiten — werden nicht auf Grundlage einer mündlichen Diskussion veröffentlicht.

In wie vielen Sprachen und wie vollständig?

Drei: Rumänisch als Basis, Russisch und Englisch. Vollständig bedeutet Kategorien, Bezeichnungen, Mengen, Zusammensetzungen, Geschmacksetiketten und Präsentationstexte, nicht nur die Buttons. Eine automatische Prüfung schlägt fehl, wenn das Menü nicht in allen drei vollständig ist — deshalb gelangt es nicht halb übersetzt auf die Website.

Wie stellen Sie sicher, dass kein falscher Preis erscheint?

Unter den Prüfungen vor der Veröffentlichung gibt es eine, die verlangt, dass die Preise in jeder Kategorie absteigen. Es ist keine geschäftliche Regel, sondern ein Detektor für Tippfehler: Eine Position, die mit einer zusätzlichen oder fehlenden Ziffer eingegeben wurde, bricht die Reihenfolge und stoppt die Veröffentlichung. Die übrigen Prüfungen kümmern sich um fehlende Fotos und ungültige Dateien.

Ist die Website auf dem Telefon, lokal, über mobile Daten schnell?

Das Ergebnis ist eine einzeln generierte Seite, mit Schriftarten, die auf derselben Domain gehostet werden, und ohne Ressourcen, die von Dritt-Domains angefordert werden. Das bedeutet weniger zu öffnende Verbindungen und nichts, das auf einen externen Dienst warten muss. Wir veröffentlichen keine Geschwindigkeitszahlen, die unter anderen Bedingungen als Ihren gemessen wurden.

Können wir einen Assistenten hinzufügen, der Fragen zum Menü beantwortet?

Ja, und dann erlaubt die Inhaltsrichtlinie der Seite genau diese Domain, nichts anderes. In einer der beiden lokalen Umgebungen ist das von außen sichtbar. Auch die Kehrseite sollte gesagt werden: In diesem Moment ist die Seite nicht mehr „ohne irgendetwas von außen“, also wird die Entscheidung bewusst getroffen, nicht als Bonus.

Sie haben zwei fast identische Menüs im Portfolio. Sind das zwei Arbeiten?

Es sind zwei Websites mit derselben Engine, desselben Eigentümers, und das sagen wir ausdrücklich. Der deklarierte funktionale Unterschied zwischen ihnen sind die Zuordnungsempfehlungen pro Produkt, die die zweite nicht hat. Wir könnten sie als unabhängige Arbeiten darstellen; das wäre eine Übertreibung des Portfolios.

Was sollte bei Ihnen besser laufen?

Erzählen Sie uns von Ihrem Prozess. Gemeinsam legen wir fest, was sich zu bauen lohnt, was wir anbinden können und wie wir das Ergebnis prüfen.

Lassen Sie uns sprechen