Zum Inhalt springen
Elyes FerchichiWebdesign Bremen
Privates ProjektPrivate Feier (Geburtstagseinladung) · Demo mit ausgetauschten Daten

Geburtstagseinladung – Save-the-Date als Retro-Website mit Geschenkeliste

Als privates Projekt für den 30. Geburtstag aus meinem Freundeskreis gebaut: Die Save-the-Date-Karte im Pixel-Look wird zur Website mit Boot-Screen, Countdown, Kart-Anmeldung, Zusage und gemeinsamer Geschenkeliste. Für die Veröffentlichung habe ich Namen, Alter, Daten und Ort ausgetauscht – „Mila wird 20“ und die Location sind erfunden.

Zeitraum
Oktober 2026
Status
Original privat online; für die Veröffentlichung Namen, Alter, Daten und Ort ausgetauscht – Demo ohne Backend
Art
Privates Projekt, kein Auftrag
Umfang
One-Pager mit Zusage, Kart-Anmeldung und Geschenkeliste
Technik
HTML/CSS/JS, Cloudflare Worker + D1, Telegram
Schriften
Press Start 2P, JetBrains Mono, VT323 (self-hosted)
Getestet
WebKit und Chromium, 320–1440 px

Privates Projekt: für Familie oder Freunde gebaut, nicht als bezahlter Auftrag.

Demo der Geburtstagseinladung „Mila wird 20“ im Retro-Pixel-Look: Save-the-Date-Poster mit Terminal-Zeilen und Pac-Man-Reihe, Desktop- und Handyansicht (erfundene Daten)
Im Rahmen scrollen, um die ganze Seite zu sehenelyesferchichi.com/konzepte/geburtstag
Demo der Geburtstagseinladung „Mila wird 20“ im Retro-Pixel-Look: Save-the-Date-Poster mit Terminal-Zeilen und Pac-Man-Reihe, Desktop- und Handyansicht (erfundene Daten) – Handyansicht
Mobilansicht

Ausgangslage

Zu einem 30. Geburtstag aus meinem Freundeskreis gab es eine gedruckte Save-the-Date-Karte im Pixel- und Terminal-Look: „SAVE THE DATE – ICH WERDE 30“ in grüner Pixelschrift, Terminal-Zeilen und eine Pac-Man-Reihe. Dazu sollte eine Einladungsseite kommen, auf der die Gäste alles finden und direkt zusagen können.

Die Aufgabe: aus der Karte eine Website machen, die sich genauso anfühlt – kein Formular mit Partyhütchen, sondern dieselbe Pixel-Welt zum Anklicken. Und sie sollte praktische Fragen lösen: Wer kommt mit wie vielen Begleitpersonen? Wer fährt Kart und zahlt vor Ort selbst? Und wie verhindert man, dass drei Gäste dasselbe Geschenk mitbringen?

Wichtig: Das ist ein privates Projekt, kein Kundenauftrag. Die echte Einladung läuft auf einer eigenen Domain und bleibt privat. Für die Veröffentlichung habe ich die Informationen ausgetauscht: Name, Alter, Termine, Ort und Preise sind erfunden („Mila wird 20“ in der „Pixel Arena“). Die Demo läuft ohne Backend und sendet nichts – Zusage, Kart-Anmeldung und Geschenkeliste bleiben nur im Browser.

Ziele

6 Ziele, an denen sich das Projekt messen lässt
  • Die Website soll sich anfühlen wie die gedruckte Karte: gleiche Schriften, Farben und Pixel-Motive.
  • Alle Infos auf einer Seite: Termine, Countdown, Location und was vor Ort geboten ist.
  • Zusagen in unter einer Minute, inklusive Begleitpersonen.
  • Kart-Anmeldung mit klarem Preis, weil jeder Gast vor Ort selbst zahlt.
  • Eine gemeinsame Geschenkeliste ohne Login, auf der nichts doppelt verschenkt wird.
  • Flüssig auf dem iPhone, obwohl überall etwas blinkt und läuft.

Lösung

Was gebaut wurde – Baustein für Baustein

Boot-Screen „PRESS START“

Die Seite startet wie eine alte Konsole: Systemzeilen, Ladebalken, dann „PRESS START“. Per Tippen oder Enter geht es weiter; wer in derselben Sitzung wiederkommt, landet direkt auf dem Poster.

Stern

Pixel-Poster in HTML und CSS

Das Motiv der Karte ist nachgebaut, nicht als Bild eingefügt: Pixelschrift mit Druck-Struktur und Glow, Terminal-Zeilen, die sich selbst tippen. So bleibt alles scharf und lesbar, auf jedem Bildschirm.

Smartphone mit Layout-Blöcken

Pac-Man-Reihe

Pac-Man und vier Geister laufen als Sprite-Streifen, bewegt nur per transform. Sie pausieren, sobald sie aus dem Bild sind oder gerade gescrollt wird – damit das Scrollen auf dem Handy flüssig bleibt.

Sanduhr

HUD-Countdown

Tage, Stunden, Minuten und Sekunden bis zur Feier im Stil einer Spielanzeige, dazu ein XP-Balken für das Jahr seit dem letzten Geburtstag. Gerechnet wird mit festen Zeitstempeln, damit Safari dieselbe Zeit zeigt wie Chrome.

Klemmbrett mit Haken

Zusage mit Begleitpersonen

Name, Ja oder Nein und 0 bis 5 Begleitpersonen per Plus und Minus, angezeigt als kleine Pixel-Spieler. Die Antwort lässt sich später ändern; der Browser merkt sich, dass schon geantwortet wurde.

Blitz

Kart-Anmeldung mit Preis

Neben dem Partyraum liegt eine Indoor-Kartbahn, jeder zahlt selbst. Die Karte zeigt Preis pro Person und Zusatzkosten, die Anmeldung nimmt bis zu fünf Fahrer pro Eintrag auf.

Herz

Gemeinsame Geschenkeliste

Gäste reservieren einen Wunsch mit ihrem Vornamen oder tragen ein eigenes Geschenk ein. Alle sehen „Noch zu haben“ und „Schon vergeben“ – so landet nichts doppelt unterm Geschenkpapier. Freigeben kann nur der Browser, der reserviert hat.

Umschlag mit Benachrichtigung

Meldung per Telegram

Zusagen, Kart-Anmeldungen und Reservierungen gehen an einen Cloudflare Worker, der sie speichert und sofort per Telegram meldet. In der Seite selbst stehen keine Schlüssel oder Passwörter.

Design

Die Farben kommen direkt von der Karte: ein fast schwarzer Grund (#060706), ein Pixel-Grün (#8CC63E) für alles Wichtige und helles Grau (#E6E6E6) für Text. Gelb (#F2C21B) und Rot (#E8302A) aus der Arcade-Welt setzen Akzente bei Pac-Man, Hinweisen und der Punkteleiste. Kästen haben abgeschrägte Ecken wie alte Spielautomaten.

Drei Schriften, alle self-hosted: Press Start 2P trägt Überschriften, Buttons und das große Poster. JetBrains Mono ist der Lauftext und die Terminal-Zeilen. VT323 gibt dem Boot-Screen und der Spielanzeige den Röhrenmonitor-Look.

Bewegung läuft bewusst in Stufen statt weich, wie auf einer Konsole: Einblendungen, Tipp-Effekt und Fortschrittsbalken springen Schritt für Schritt. Wer reduzierte Bewegung eingestellt hat, sieht alles sofort und ohne Endlos-Animationen.

Technik

8 Bausteine – und warum genau diese
Vanilla HTML/CSS/JS

Eine einzige Datei ohne Framework und ohne Build-Schritt. Lädt schnell und lässt sich auf jede Domain legen.

Press Start 2P, JetBrains Mono, VT323

Pixel-, Mono- und Röhrenschrift self-hosted, die Lizenzen liegen daneben. Kein Aufruf von Google Fonts.

Pixel-Art als SVG aus Zeichen-Rastern

Pac-Man, Geister, Kart und Spiel-Icons stehen als kleine Text-Raster im Code und werden zu scharfen SVGs gebaut. Keine Bilddateien.

Cloudflare Worker + D1

Speichert Zusagen, Kart-Anmeldungen und Reservierungen. Ob ein Wunsch noch frei ist, entscheidet der Server, nicht der Browser.

Telegram Bot API

Jede Zusage und jede Reservierung kommt sofort als Nachricht aufs Handy.

Zufalls-Schlüssel im Browser

Wer reserviert, bekommt einen Schlüssel im localStorage. Nur damit lässt sich die eigene Reservierung wieder freigeben – ganz ohne Login.

IntersectionObserver

Endlos-Animationen laufen nur, solange sie sichtbar sind; Einblendungen starten erst beim Scrollen.

PNG-Kacheln statt Filter

Scanlines und Korn sind winzige, einmal dekodierte PNG-Kacheln. Der frühere SVG-Rauschfilter wurde in Safari bei jedem Scroll-Frame neu gerechnet.

Antippen zeigt, warum ich mich dafür entschieden habe.

SEO

5
  • Bewusst noindex: Die Einladung ist nur für Gäste mit Link gedacht und soll nicht in Suchmaschinen auftauchen.
  • Eigenes Vorschaubild (1200 × 630) im Poster-Look, damit der Link in WhatsApp und Co. sofort als Einladung erkennbar ist.
  • Titel und Beschreibung für die Link-Vorschau geschrieben, nicht für Google.
  • Klare Überschriften und sprechende Sprungmarken zu Zusage, Kart-Anmeldung und Geschenkeliste.
  • Favicon und Homescreen-Icon als Pixel-Geist.

Barrierefreiheit

5
  • Boot-Screen als Dialog ausgezeichnet und per Enter, Leertaste oder Escape überspringbar; der Rest der Seite ist so lange inert.
  • Formulare mit sichtbaren Labels, Fehlermeldungen als Alert und Eingabefeldern in 16 px, damit iOS nicht hineinzoomt.
  • Touch-Ziele mindestens 44 Pixel; Plus- und Minus-Schalter sind für Screenreader beschriftet.
  • Pixel-Grafiken sind für Screenreader ausgeblendet, der Countdown wird nicht jede Sekunde vorgelesen.
  • prefers-reduced-motion schaltet Tipp-Effekt, Pac-Man und alle Endlos-Animationen ab.

Datenschutz

5
  • Schriften liegen auf dem eigenen Server, keine Verbindung zu Google Fonts.
  • Kein Tracking und keine Analytics auf der Einladung.
  • Gespeichert werden nur Name, Antwort und Reservierung – im eigenen Cloudflare Worker statt bei einem Formulardienst.
  • Keine Schlüssel oder Passwörter im Seitencode; die Telegram-Zugangsdaten liegen nur im Worker.
  • Einzige externe Einbindung im Original ist die Karte, die erst lädt, wenn sie in die Nähe kommt. Die Demo ersetzt sie durch eine gezeichnete Karte und stellt gar keine externen Anfragen.

Performance

Gemessen am 10. Oktober 2026, mobil (simulierte 4G-Drosselung) mit Lighthouse.
LCP1,3 sLargest Contentful Paint
CLS0,028Layout-Verschiebung
TBT3 msBlockierzeit
Gewicht108 KBÜbertragene Daten
Hauptthread im Leerlauf
1027 ms → rund 110 ms je 3 sChromium, CPU 4-fach gedrosselt, vor und nach der Performance-Runde
Bildrate WebKit
Ø 25 → 75 fpsGeräteprofil iPhone 14, vor und nach der Performance-Runde
Getestet
WebKit und ChromiumBildschirmbreiten von 320 bis 1440 px
Externe Anfragen der Demo
0nur eigene Dateien: Seite, Schriften, zwei Struktur-Kacheln, Favicon

Der Lighthouse-SEO-Wert ist hier bewusst reduziert: Die Seite trägt „noindex", weil sie als Konzept bzw. privates Projekt nicht in Suchmaschinen erscheinen soll. Alle übrigen SEO-Prüfungen bestehen.

Ablauf

6 Schritte von der Idee bis online
  1. Karte als Vorlage

    Die gedruckte Save-the-Date-Karte war der Styleguide: Farben, Schriften, Pixel-Motive und Sprüche direkt übernommen.

  2. Poster nachbauen

    Pixel-Poster, Terminal-Zeilen und Pac-Man-Reihe in HTML, CSS und SVG nachgebaut statt als Bild eingesetzt.

  3. Inhalte und Formulare

    Countdown, Termine, Location, Spiele, Zusage, Kart-Anmeldung und Geschenkeliste auf einer Seite.

  4. Backend

    Cloudflare Worker mit D1 für Zusagen und Reservierungen, Meldung per Telegram, Schutz vor doppelten Reservierungen.

  5. Performance-Runde

    Rauschfilter und Vollbild-Overlay durch PNG-Kacheln ersetzt, Animationen pausieren außerhalb des Bildes und beim Scrollen. Gemessen in Chromium und WebKit.

  6. Demo fürs Portfolio

    Anonymisierte Kopie mit erfundenen Daten: „Mila wird 20“, gezeichnete Karte, kein Backend – alles bleibt im Browser.

Ergebnis

Was am Ende belegbar dasteht
  • Hauptthread-Last im Leerlauf von 1027 ms auf rund 110 ms je 3 Sekunden gesenkt (Chromium, CPU 4-fach gedrosselt).
  • 75 fps im Schnitt statt vorher 25 – gemessen in WebKit mit dem Geräteprofil eines iPhone 14.
  • Gäste reservieren Geschenke ohne Login; doppelte Reservierungen lehnt der Server ab.
  • Die echte Einladung läuft privat auf eigener Domain, Zusagen und Reservierungen kommen per Telegram an.
  • Demo ohne Backend: 0 externe Anfragen, Zusage, Kart-Anmeldung und Geschenkeliste funktionieren nur im Browser.

Learnings

Was ich mitnehme
  1. Eine Einladung ist auch ein Design-Projekt: Sieht die Website aus wie die Karte, gehört sie für die Gäste sofort dazu.

  2. Effekte, die auf dem Desktop nichts kosten, können ein iPhone ausbremsen. Der größte Bremsklotz war ein Rauschfilter, den Safari bei jedem Scroll-Frame neu berechnet hat.

  3. Messen statt raten: Erst die Zahlen aus Chromium und WebKit haben gezeigt, welche Animation wirklich teuer ist.

  4. Eine gemeinsame Liste ohne Login braucht trotzdem Regeln: Der Server entscheidet, wer zuerst reserviert hat, und nur der eigene Browser darf wieder freigeben.

Fragen zum Projekt

Häufige Fragen

Ist das die echte Einladung?

Nein. Die echte Einladung ist privat und läuft auf einer eigenen Domain. Über „Live ansehen“ sehen Sie dieselbe Seite mit ausgetauschten Informationen: Mila, die Pixel Arena, Preise und Termine sind erfunden, und die Demo sendet nichts.

Kann ich so eine Einladung für meine Feier bekommen?

Ja. Countdown, Zusage mit Begleitpersonen, Anmeldung für Programmpunkte und eine gemeinsame Geschenkeliste lassen sich für Geburtstage, Jubiläen oder Firmenfeiern anpassen – im Look Ihrer Einladungskarte. Schreiben Sie mir über Kontakt. Für Hochzeiten gibt es eine eigene Seite: Hochzeitswebsite.

Wie funktioniert die Geschenkeliste ohne Anmeldung?

Wer einen Wunsch reserviert, trägt nur den Vornamen ein. Der Browser bekommt einen zufälligen Schlüssel, mit dem sich die Reservierung später wieder freigeben lässt. Ob ein Wunsch noch frei ist, entscheidet der Server – zwei Gäste können denselben Wunsch nicht gleichzeitig reservieren.

Wer bekommt die Zusagen?

In der echten Einladung landen Zusagen, Kart-Anmeldungen und Reservierungen im Cloudflare Worker und werden per Telegram gemeldet. In der Demo bleibt alles in Ihrem Browser.

Passende Leistungen

Das steckt dahinter

Ähnliches Projekt?

Sie brauchen so etwas für Ihren Betrieb?

Schreiben Sie mir, was Sie vorhaben. Ich sage Ihnen ehrlich, was sinnvoll ist, und nenne einen Festpreis.