Files
Wedding-Website/README.md
2026-03-04 19:17:46 +00:00

21 KiB
Raw Permalink Blame History

💍 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