💍 Wedding App – Svenja & Dominic
Private, moderne Hochzeits-Webanwendung für eingeladene Gäste.
Die Anwendung stellt eine geschlossene Event-Plattform dar, über die Gäste sich einloggen, ihre Teilnahme verwalten, Fotos hochladen und alle relevanten Informationen zur Hochzeit abrufen können.
Die gesamte Website ist nur nach erfolgreichem Login zugänglich.
🎯 Projektziel
Die Wedding-App soll:
unter https://www.svenja-dominic-hochzeit.de/ direkt zum Login führen
ausschließlich eingeladene Gäste mit Event-Passwort zulassen
eine strukturierte RSVP-Verwaltung ermöglichen
eine gemeinsame Fotogalerie bereitstellen
Location-, Hotel-, Taxi- und Ablauf-Informationen anzeigen
eine Google Maps Einbindung enthalten
einen prominenten Link zur offiziellen Website der Location anzeigen
eine DE/EN Sprachumschaltung bieten
modern, mobiloptimiert und ästhetisch wirken
🏗 Seitenarchitektur 🔐 Geschlossene Plattform
Die gesamte Anwendung ist nur nach Login erreichbar. Es existiert kein öffentlich zugänglicher Bereich.
🏡 Login / Landing Page (Hero + Dashboard Konzept)
Nach erfolgreichem Login besteht die Startseite aus zwei Bereichen:
1️⃣ Hero-Section (emotionaler Bereich)
Großes Hintergrundbild
„Willkommen zu unserer Hochzeit“
Datum
kurzer persönlicher Text
Scroll-Hinweis oder sanfter Übergang
Ziel: Emotionale Begrüßung statt App-Charakter.
2️⃣ Dashboard-Bereich
Nach dem Scrollen folgt das funktionale Gästedashboard:
Kartenstruktur mit:
RSVP
Upload
Galerie
Ablauf
Hotels
Taxi
Location
Das Dashboard bleibt funktional strukturiert, wirkt jedoch durch den vorgelagerten Hero-Bereich nicht wie eine Business-Webapp.
🎨 Design-Philosophie
Die Anwendung soll:
modern und hochwertig wirken
mobil-first entwickelt werden
viel Weißraum verwenden
runde Karten mit weichen Schatten nutzen
eine warme, konsistente Farbpalette verwenden (z. B. Creme, Beige, Dunkelgrün, Gold-Akzente)
klare Typografie einsetzen (z. B. Google Fonts)
dezente Hover-Animationen nutzen
elegant, aber nicht verspielt wirken
Design-Leitsatz:
Schön vor komplex Einfach vor überengineered Wartbar vor clever
🌍 Mehrsprachigkeit
Umschaltbar zwischen Deutsch und Englisch
Sprachwahl per Switch im Header
Umsetzung über Flask-Session oder i18n-Lösung
Kein automatisches Geo-Redirect
🔐 Login & Registrierung
Zugriff ausschließlich mit Event-Passwort.
Environment Variable:
EVENT_PASSWORD HOST_PASSWORD WEDDING_DATE (optional)
Registrierung:
Gast gibt Event-Passwort ein
Gast gibt seinen Namen ein
Bei korrekter Validierung → Speicherung in Datenbank
Session-basierter Login (Flask Sessions)
Nicht implementiert:
E-Mail-Verifikation
Rollen-System
öffentliche Registrierung
Admin-Panel
📝 RSVP-System
Im Dashboard auswählbar:
Ich komme
Ich komme nicht
Ich bringe eine Begleitperson mit (nur wenn attending = true)
Daten werden persistent gespeichert.
📸 Foto-Upload
Erlaubte Formate:
jpg
jpeg
png
Sicherheitsanforderungen:
Dateityp validieren
Dateigröße limitieren
Dateinamen sanitizen
Path Traversal verhindern
Upload-Referenz in Datenbank speichern
Speicherung in /uploads
Optional empfohlen:
Entfernen von EXIF-Metadaten beim Upload (Datenschutz)
🖼 Galerie
Alle Gäste sehen alle Bilder
Responsives Grid
Optionale Modal-Ansicht
Kein Download-Tracking
🗺 Location-Seite
Enthält:
Google Maps Embed (iframe)
Name der Location
Adresse
Button „Zur Location-Webseite“
Der Button muss:
target="_blank"
rel="noopener"
URL aus Environment Variable beziehen
Konfigurierbare Variablen:
LOCATION_NAME LOCATION_ADDRESS LOCATION_WEBSITE_URL GOOGLE_MAPS_EMBED_URL
Empfohlen:
Google Maps erst nach Nutzerklick laden (2-Klick-Lösung)
🧱 Datenbank (SQLite) Tabelle: guests
id (Primary Key)
name (String, required)
attending (Boolean, nullable)
plus_one (Boolean, default False)
created_at (Timestamp)
Tabelle: uploads
id (Primary Key)
filename
uploaded_by (Guest ID)
uploaded_at (Timestamp)
🧰 Technischer Stack
Python 3.12
Flask
Gunicorn
uv (Dependency Management)
SQLite
Docker
Docker Compose
Optional: Nginx + Certbot (Production)
📦 Dependency Management
Keine requirements.txt
Nutzung von uv
Abhängigkeiten in pyproject.toml
uv.lock wird committed
Docker nutzt:
uv sync --frozen --no-dev 🐳 Docker
Base Image:
python:3.12-slim
Gunicorn Start:
uv run gunicorn -b 0.0.0.0:8000 app:app
Persistente Volumes:
uploads
SQLite-Datenbank
🔒 Sicherheitsanforderungen
Event-Passwort darf niemals im Frontend erscheinen
Upload-Dateien validieren
Dateigröße limitieren
HTTPS verpflichtend im Produktivbetrieb
Keine unnötigen Features implementieren
📑 DSGVO & Rechtliches Struktur
Eigene Route für Datenschutzerklärung
Platzierung im Footer neben Impressum
Dauerhaft erreichbar
Enthält: -> Vorlage ist schon im unteren abschnitt des textes erhalten.
Verantwortlicher
Verarbeitung beim Websiteaufruf
Google Maps Nutzung
Foto-Upload inkl. möglicher Metadaten
Rechte der Betroffenen
Cookie-Hinweis
Optional empfohlen:
EXIF-Metadaten beim Upload entfernen
Google Maps erst nach Einwilligung laden
❌ Nicht-Ziele
Kein Admin-Panel
Keine E-Mail-Funktion
Kein Payment
Kein OAuth
Keine Cloud-Storage-Integration
Keine Microservices
DSGVO erklärung: --> erstellung eines weiteren verzeichnisses auf dem die dsgco erklärung erreicht werden kann. Platzierung am Footer mit Impressum.
Datenschutzerklärung
In dieser Datenschutzerklärung informieren wir Sie über die Verarbeitung personenbezogener Daten bei der Nutzung dieser Website.
Verantwortlicher
Verantwortlich für die Datenverarbeitung ist: Dominic Thiels, Wiesbadener Straße 70b, 65510, Idstein, +49 151 70616118 und d.thiels@freenet.de
Personenbezogene Daten
Personenbezogene Daten sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (betroffene Person) beziehen. Als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.
Daten beim Websiteaufruf
Wenn Sie diese Website nur nutzen, um sich zu informieren und keine Daten angeben, dann verarbeiten wir nur die Daten, die zur Anzeige der Website auf dem von Ihnen verwendeten internetfähigen Gerät erforderlich sind. Das sind insbesondere:
IP-Adresse Datum und Uhrzeit der Anfrage jeweils übertragene Datenmenge die Website, von der die Anforderung kommt Browsertyp und Browserversion Betriebssystem Rechtsgrundlage für die Verarbeitung dieser Daten sind berechtigte Interessen gemäß Art. 6 Abs. 1 lit. f) DSGVO, um die Darstellung der Website grundsätzlich zu ermöglichen.
Darüber hinaus können Sie verschiedene Leistungen auf der Website nutzen, bei der weitere personenbezogene und nicht personenbezogene Daten verarbeitet werden.
Ihre Rechte
Als betroffene Person haben Sie folgende Rechte:
Sie haben ein Auskunftsrecht bezüglich der Sie betreffenden personenbezogenen Daten, die der Verantwortliche verarbeitet (Art. 15 DSGVO), Sie haben das Recht auf Berichtigung der Sie betreffenden Daten, wenn diese unrichtig oder unvollständig gespeichert werden (Art. 16 DSGVO), Sie haben das Recht auf Löschung (Art. 17 DSGVO), Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen (Art. 18 DSGVO), Sie haben das Recht auf Datenübertragbarkeit (Art. 20 DSGVO), Sie haben ein Widerspruchsrecht gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten (Art. 21 DSGVO), Sie haben das Recht, nicht einer ausschließlich auf einer automatisierten Verarbeitung – einschließlich Profiling – beruhenden Entscheidung unterworfen zu werden, die Ihnen gegenüber rechtliche Wirkung entfaltet oder Sie in ähnlicher Weise erheblich beeinträchtigt (Art. 22 DSGVO), Sie haben das Recht, sich bei einem vermuteten Verstoß gegen das Datenschutzrecht bei der zuständigen Aufsichtsbehörde zu beschweren (Art. 77 DSGVO). Zuständig ist die Aufsichtsbehörde an Ihrem üblichen Aufenthaltsort, Arbeitsplatz oder am Ort des vermuteten Verstoßes. Einsatz von Cookies
Beim Besuch der Website können Cookies auf Ihrem Gerät gespeichert werden. Cookies sind kleine Textdateien, die von dem von Ihnen verwendeten Browser gespeichert werden. Cookies können keine Programme ausführen und auch keine Viren auf Ihr Gerät übertragen. Die Stelle, die den Cookie setzt, kann darüber jedoch bestimmte Informationen erhalten. So kann mithilfe von Cookies insbesondere das Gerät, mit dem diese Website aufgerufen wurde, bei einem erneuten Aufruf erkannt werden.
Durch die Browsereinstellungen lässt sich das Setzen von Cookies einschränken oder verhindern. So kann z. B. nur die Annahme von Cookies, die von Drittanbietern stammen, blockiert werden oder aber auch die Annahme von allen Cookies. Durch das Blockieren sind jedoch möglicherweise nicht mehr alle Funktionen dieser Website nutzbar. Im weiteren Text dieser Datenschutzerklärung informieren wir Sie konkret, an welchen Stellen und zu welchen Zwecken Cookies auf den Seiten zum Einsatz kommen.
Es werden ausschließlich technisch notwendige Cookies verwendet, die für den Betrieb der Website und die Aufrechterhaltung der Benutzersitzung erforderlich sind.
Google Maps
Auf dieser Website ist ein Dienst der Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, eingebunden, um geographische Informationen visuell darzustellen (Google Maps).
Bei der Nutzung von Google Maps werden Informationen über die Nutzung dieser Website einschließlich Ihrer IP-Adresse an Server von Google übertragen und dort gespeichert. Diese Server können sich auch in den USA befinden. Google kann diese Informationen gegebenenfalls an Dritte übertragen, sofern dies gesetzlich vorgeschrieben ist oder soweit Dritte diese Daten im Auftrag von Google verarbeiten.
Die Nutzung von Google Maps erfolgt im Interesse einer ansprechenden Darstellung der Veranstaltungsorte sowie einer leichten Auffindbarkeit der auf der Website angegebenen Orte. Dies stellt ein berechtigtes Interesse im Sinne von Art. 6 Abs. 1 lit. f DSGVO dar.
Sofern eine entsprechende Einwilligung abgefragt wird (z. B. über ein Cookie-Banner), erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO. Die Einwilligung kann jederzeit widerrufen werden.
Weitere Informationen zur Datenverarbeitung durch Google finden Sie in der Datenschutzerklärung von Google: https://policies.google.com/privacy
Upload von Fotos durch Nutzer
Auf dieser Website besteht die Möglichkeit, Fotos hochzuladen, beispielsweise im Rahmen einer gemeinsamen Hochzeitsgalerie.
Beim Hochladen von Fotos werden folgende personenbezogene Daten verarbeitet:
die hochgeladene Bilddatei
gegebenenfalls enthaltene Metadaten (z. B. z. B. Aufnahmedatum, Kamerainformationen oder gegebenenfalls Standortdaten/GPS-Koordinaten)
der vom Nutzer angegebene Name (sofern vorgesehen)
technische Zugriffsdaten (z. B. IP-Adresse, Zeitpunkt des Uploads)
Die Verarbeitung erfolgt zum Zweck der Bereitstellung einer gemeinsamen Fotogalerie für Gäste der Veranstaltung. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO (Erfüllung der Nutzungsfunktion der Website) sowie Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Bereitstellung einer gemeinsamen Erinnerungsplattform).
Es wird darauf hingewiesen, dass hochgeladene Fotos personenbezogene Daten Dritter enthalten können (z. B. Abbildungen von Personen). Der hochladende Nutzer ist dafür verantwortlich, dass die Veröffentlichung dieser Bilder datenschutzrechtlich zulässig ist und insbesondere die Einwilligung der abgebildeten Personen vorliegt.
Die Fotos werden ausschließlich für den vorgesehenen Zweck gespeichert und nicht an Dritte weitergegeben, sofern keine gesetzliche Verpflichtung besteht.
Quelle: Muster-Datenschutzerklärung von anwalt.de
Impressum Angaben gemäß § 5 DDG
Dominic Thiels
Wiesbadener Straße 70b 65510 Idstein
Vertreten durch: Dominic Thiels
Kontakt: Telefon: +49-151 70616118 E-Mail: d.thiels@freenet.de
Verbraucherstreitbeilegung / Universalschlichtungsstelle Wir nehmen nicht an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teil und sind dazu auch nicht verpflichtet.
Haftungsausschluss:
Haftung für Inhalte Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
Haftung für Links Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Urheberrecht Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Erstellt mit dem Impressum-Generator von WebsiteWissen.com, dem Ratgeber für Website-Erstellung, Homepage-Baukästen und Shopsysteme. Rechtstext von der Kanzlei Hasselbach.
HTML:
Impressum
Angaben gemäß § 5 DDG
Dominic Thiels
Wiesbadener Straße 70b
65510 Idstein
Vertreten durch:
Dominic Thiels
Kontakt:
Telefon: +49-151 70616118
E-Mail: d.thiels@freenet.de
Verbraucherstreitbeilegung / Universalschlichtungsstelle
Wir nehmen nicht an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teil und sind dazu auch nicht verpflichtet.
Haftungsausschluss:
Haftung für Inhalte
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
Haftung für Links
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Erstellt mit dem Impressum-Generator von WebsiteWissen.com, dem Ratgeber für Website-Erstellung, Homepage-Baukästen und Shopsysteme. Rechtstext von der Kanzlei Hasselbach.
Nutzer Rollen Authentifikationsorinzip:
Jeder account = Eine einladung (einladungen gehen an Familien und an Einzelpersonen. Familien trotzdem ein zugang.) Auch einzelpersonen also personen die ohne begleitung zur hochzeit kommen gelten als Gruppe.
Ziel ist es das sich zum beispiel aus einer Familie nur einer Anmelden muss und für die vordefinierten mitglieder der familie angeben kann ob diese kommen oder nicht. zum beispiel anhand einer ccrollbar oder karten. Jede Gruppe erhält ein Passwort. Verschiedene Gruppen haben aber verschiedene Passwörter.
Bilder Uploads: Bilder sollen aus der Galerie wieder gelöscht werden. Aber nur von dem Nutzer der Sie hochgeladen hat. Besonderheit die Gastgeber (Admins) können alle Bilder löschen. Bilder Downloadfunktion: Einen Button um Bilder zu downloaden. -> Bilder sollen auch aus der Äppel oder Androidbilder Gallerie geuploadet werden.
Zusätzlicher Button: Zurück beispielsweise in form eines Pfeils. damit man im dashboard zurück manövirieren kann. (Soll den Abmeldebutton aber nicht ersetzen)
Adminnutzer:
Bubus (Admingruppe) Mitglieder: Svenja, Dominic
Standardnutzer:
Remi Mitglieder: Remi
Chantal Mitglieder: Chantal
Madeleine Mitglieder: Madeleine
Julie & Daniel Mitglieder: Julie, Daniel
Tim & Sophie Mitglieder: Tim, Sophie
Marcel & Kathrin Mitglieder: Marcel, Kathrin
Marie & Kai Mitglieder: Marie, Kai
Familie Olsem Mitglieder: Laura, Sven, Lena, Finn
Maxime Mitglieder: Maxime, Freund
Familie Löster Mitglieder: Claudia, Mario, Mélodie
Familie Thiels Mitglieder: Matthias, Opa Bernd, Oma Heidi
Familie Gollor Mitglieder: Michael, Christin, Bruno
Monika Mitglieder: Monika
Familie Konrad Mitglieder: Michael, Sandra, Christoph, Alexander
Mark Mitglieder: Mark
Elias Mitglieder: Elias
Milan Mitglieder: Milan
Familie Wolff Mitglieder: Anja, Bodo
Anna & Leon Mitglieder: Anna, Leon
Aryan Mitglieder: Aryan
Sebastian Mitglieder: Sebastian, Olivia
Leander & Heni Mitglieder: Leander, Heni
Flo Mitglieder: Flo
Nico & Pia Mitglieder: Nico, Pia
Kiki Mitglieder: Kiki
Lana & Eric Mitglieder: Lana, Eric
Britta Mitglieder: Britta
Holzi Mitglieder: Holzi
Eirene Mitglieder: Eirene
Family Hynes Mitglieder: Steven, Martha, William, Tim, Steven Jr.
Timbo Mitglieder: Timbo
Karen & Jay Mitglieder: Karen, Jay
Alina Mitglieder: Alina
Max Mitglieder: Max
Paul & Alix Mitglieder: Paul, Alix
Alfred & Nadia Mitglieder: Alfred, Nadia
Anne-Marie & Erny Mitglieder: Anne-Marie, Erny
Familie Kieffer Mitglieder: Anny, John, Jana