Readme und Agend.md gefüllt
This commit is contained in:
285
AGENTS.md
285
AGENTS.md
@@ -1,54 +1,251 @@
|
||||
# AGENTS.md
|
||||
AGENTS.md
|
||||
💍 Wedding App – Agent Specification (Modern UI Edition)
|
||||
1. Project Overview
|
||||
|
||||
Diese Datei definiert, wie der Coding-Agent in diesem Repository arbeiten soll.
|
||||
A private wedding web app for invited guests. (Link: https://www.svenja-dominic-hochzeit.de/)
|
||||
|
||||
## Ziel
|
||||
- Schnell, pragmatisch und sauber am Projekt arbeiten.
|
||||
- Änderungen nachvollziehbar halten.
|
||||
- Risiken früh sichtbar machen.
|
||||
Core goals:
|
||||
|
||||
## Projektkontext
|
||||
- Projektname: `wedding-app`
|
||||
- Hauptidee:
|
||||
- TODO: Kurz in 2-4 Sätzen beschreiben, was die App lösen soll.
|
||||
- Status:
|
||||
- TODO: MVP / in Entwicklung / produktiv
|
||||
password-protected access (event password)
|
||||
|
||||
## Tech-Stack
|
||||
- Backend: TODO
|
||||
- Frontend: TODO
|
||||
- Datenbank: TODO
|
||||
- Deployment: TODO
|
||||
RSVP + plus-one selection
|
||||
|
||||
## Arbeitsregeln für den Agenten
|
||||
- Erst lesen, dann ändern.
|
||||
- Kleine, gezielte Änderungen statt großer unkontrollierter Umbauten.
|
||||
- Bestehende Patterns im Code respektieren.
|
||||
- Keine destruktiven Git-Befehle ohne explizite Freigabe.
|
||||
- Bei Unsicherheit Annahmen klar nennen.
|
||||
photo upload + shared gallery
|
||||
|
||||
## Code-Standards
|
||||
- Lesbarkeit vor Cleverness.
|
||||
- Funktions- und Variablennamen eindeutig wählen.
|
||||
- Kommentare nur dort, wo Logik sonst nicht sofort klar ist.
|
||||
- Keine unnötigen Abhängigkeiten hinzufügen.
|
||||
modern information pages (schedule, hotels, taxi)
|
||||
|
||||
## Tests & Validierung
|
||||
- Nach Änderungen relevante Tests ausführen.
|
||||
- Wenn keine Tests vorhanden sind:
|
||||
- Mindestens Smoke-Test beschreiben und durchführen.
|
||||
- Bei nicht ausführbaren Tests Grund dokumentieren.
|
||||
embedded Google Maps location
|
||||
|
||||
## Dokumentation
|
||||
- README aktuell halten bei:
|
||||
- Setup-Änderungen
|
||||
- neuen Umgebungsvariablen
|
||||
- neuen Commands
|
||||
- Architekturänderungen
|
||||
- Wichtige Entscheidungen kurz als Decision Log festhalten.
|
||||
external link to the official location website
|
||||
|
||||
## Decision Log
|
||||
- YYYY-MM-DD: Entscheidung, Grund, Auswirkung
|
||||
button to switch the language of the webapp from german to english
|
||||
|
||||
## Nächste Schritte (laufend pflegen)
|
||||
- TODO: wichtigste offene Aufgaben als kurze Liste
|
||||
visually polished, modern design (mobile-first)
|
||||
|
||||
|
||||
|
||||
2. Tech Stack (Required)
|
||||
|
||||
Python 3.12
|
||||
|
||||
Flask
|
||||
|
||||
Gunicorn
|
||||
|
||||
uv (dependency management)
|
||||
|
||||
SQLite
|
||||
|
||||
Docker + Docker Compose
|
||||
|
||||
Frontend approach:
|
||||
|
||||
Use server-rendered templates (Jinja2)
|
||||
|
||||
Use modern CSS (prefer one of the following):
|
||||
|
||||
Tailwind CSS via CDN (fastest)
|
||||
|
||||
or a small handcrafted CSS design system (preferred if no CDN)
|
||||
|
||||
No heavy JS frameworks required.
|
||||
|
||||
3. UI / UX Design Requirements (IMPORTANT)
|
||||
|
||||
The site must look modern, elegant, and “wedding-like”:
|
||||
|
||||
Visual Style
|
||||
|
||||
Clean typography (Google Fonts allowed)
|
||||
|
||||
Soft spacing, rounded cards, subtle shadows
|
||||
|
||||
Consistent color palette (e.g., beige / cream / dark green / gold accents)
|
||||
|
||||
Smooth hover states and transitions
|
||||
|
||||
High-quality hero section on landing page
|
||||
|
||||
Layout
|
||||
|
||||
Mobile-first (works on phones)
|
||||
|
||||
Clear navigation
|
||||
|
||||
Dashboard cards for features (RSVP, Upload, Info)
|
||||
|
||||
Minimal clutter, lots of whitespace
|
||||
|
||||
Pages
|
||||
|
||||
Must implement at least:
|
||||
|
||||
Landing / Login page (with hero design)
|
||||
|
||||
Dashboard
|
||||
|
||||
RSVP page (or dashboard section)
|
||||
|
||||
Upload page
|
||||
|
||||
Gallery page
|
||||
|
||||
Info pages (schedule, hotels, taxi, location)
|
||||
|
||||
4. Location Page Requirements
|
||||
|
||||
Must include:
|
||||
|
||||
Embedded Google Maps iframe
|
||||
|
||||
Address (configurable)
|
||||
|
||||
A prominent button:
|
||||
|
||||
“Zur Location-Webseite” (or “Visit Location Website”)
|
||||
|
||||
open in new tab (target="_blank" rel="noopener")
|
||||
|
||||
The location website URL must be configurable via environment variable:
|
||||
|
||||
LOCATION_WEBSITE_URL
|
||||
|
||||
Optionally also:
|
||||
|
||||
LOCATION_NAME
|
||||
|
||||
LOCATION_ADDRESS
|
||||
|
||||
GOOGLE_MAPS_EMBED_URL
|
||||
|
||||
5. Authentication Requirements
|
||||
|
||||
Registration/login requires event password
|
||||
|
||||
Event password stored in environment variable:
|
||||
|
||||
EVENT_PASSWORD
|
||||
|
||||
Guest provides:
|
||||
|
||||
event password
|
||||
|
||||
guest name
|
||||
|
||||
Use Flask sessions
|
||||
|
||||
Keep it simple (no email verification, no roles)
|
||||
|
||||
6. Database Schema (Minimum)
|
||||
|
||||
Table: guests
|
||||
|
||||
id (PK)
|
||||
|
||||
name (required)
|
||||
|
||||
attending (boolean, nullable)
|
||||
|
||||
plus_one (boolean, default False)
|
||||
|
||||
created_at (timestamp)
|
||||
|
||||
Table: uploads
|
||||
|
||||
id (PK)
|
||||
|
||||
filename
|
||||
|
||||
uploaded_by (guest id)
|
||||
|
||||
uploaded_at (timestamp)
|
||||
|
||||
SQLite is sufficient.
|
||||
|
||||
7. RSVP Logic
|
||||
|
||||
In the UI:
|
||||
|
||||
guest selects attending Yes/No
|
||||
|
||||
plus_one option only shown if attending Yes
|
||||
|
||||
persist to database
|
||||
|
||||
8. Upload Requirements
|
||||
|
||||
allowed types: jpg, jpeg, png
|
||||
|
||||
configurable max upload size
|
||||
|
||||
sanitize filenames
|
||||
|
||||
prevent path traversal
|
||||
|
||||
store in /uploads
|
||||
|
||||
store upload reference in DB
|
||||
|
||||
9. Gallery Requirements
|
||||
|
||||
all guests can view uploaded images
|
||||
|
||||
show thumbnails in a responsive grid
|
||||
|
||||
click opens a larger view (simple modal or dedicated page)
|
||||
|
||||
10. Dependency Management Rules
|
||||
|
||||
Use uv
|
||||
|
||||
Dependencies defined in pyproject.toml
|
||||
|
||||
Commit uv.lock
|
||||
|
||||
No requirements.txt
|
||||
|
||||
In Docker:
|
||||
|
||||
uv sync --frozen --no-dev
|
||||
|
||||
11. Docker Requirements
|
||||
|
||||
Dockerfile must:
|
||||
|
||||
Base: python:3.12-slim
|
||||
|
||||
Install uv
|
||||
|
||||
Copy pyproject.toml + uv.lock first (cache-friendly)
|
||||
|
||||
Run uv sync --frozen --no-dev
|
||||
|
||||
Start with:
|
||||
|
||||
uv run gunicorn -b 0.0.0.0:8000 app:app
|
||||
|
||||
Uploads + SQLite database must be persistent via volumes.
|
||||
|
||||
12. Non-Goals (Do NOT implement)
|
||||
|
||||
Admin dashboards
|
||||
|
||||
Email systems
|
||||
|
||||
Payments
|
||||
|
||||
OAuth
|
||||
|
||||
External cloud storage
|
||||
|
||||
Microservices
|
||||
|
||||
13. Design Philosophy
|
||||
|
||||
Aesthetic first, but not overengineered
|
||||
|
||||
Simple, maintainable code
|
||||
|
||||
Minimal dependencies
|
||||
|
||||
Good UX on mobile
|
||||
Reference in New Issue
Block a user