feat: launch desfoto.de as a standalone photography site and retire the old redirect
This commit is contained in:
68
README.md
Normal file
68
README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# desfoto.de
|
||||
|
||||
Quellcode und Deployment für **https://desfoto.de** — die Foto- und Videoproduktion
|
||||
von Denny Schulz aus Neumünster.
|
||||
|
||||
Die Seite ist bewusst als statische Website gebaut: kein Framework, kein CMS, keine
|
||||
Datenbank. `scripts/build-site.py` erzeugt aus `src/` und den heruntergeladenen
|
||||
Originaldateien in `assets-src/` das vollständige, auslieferbare Verzeichnis `site/`.
|
||||
|
||||
## Aufbau
|
||||
|
||||
| Pfad | Inhalt |
|
||||
| --- | --- |
|
||||
| `src/content.py` | Alle redaktionellen Inhalte, Kontaktdaten und Pflichtangaben |
|
||||
| `src/pages.py` | Die 13 Seiten und die 404-Seite als HTML-Fabriken |
|
||||
| `src/layout.py` | Grundgerüst, Navigation, `<head>`, Bild-Helfer |
|
||||
| `src/theme.py` | Design-Tokens und das komplette Stylesheet |
|
||||
| `src/images.json` | Zuordnung der Bildmotive aus dem eigenen Bilderpool |
|
||||
| `scripts/fetch-assets.py` | Lädt Bilderpool, Google-Fonts-Subsets und Lizenzen |
|
||||
| `scripts/build-site.py` | Erzeugt `site/` inkl. WebP-Varianten, OG-Bildern, Sitemap |
|
||||
| `tests/test_site.py` | Struktur-, Datenschutz- und Inhaltstests |
|
||||
| `site/` | Generiertes Ergebnis — wird so ausgeliefert (committet) |
|
||||
| `assets-src/` | Heruntergeladene Quellen (nicht im Git, per Skript reproduzierbar) |
|
||||
| `.ocauto/` | QA-, Deploy- und Verify-Hooks |
|
||||
| `docs/deployment.md` | Produktionsablauf, Rollback, Infrastruktur |
|
||||
|
||||
## Lokal bauen und prüfen
|
||||
|
||||
```bash
|
||||
python3 scripts/fetch-assets.py # einmalig, braucht Zugriff auf den Bilderpool
|
||||
python3 scripts/build-site.py # schreibt site/
|
||||
.ocauto/qa # vollständige deterministische Prüfung
|
||||
```
|
||||
|
||||
Der lokale Server läuft über Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose -f compose.yml up -d
|
||||
open http://127.0.0.1:18430/
|
||||
```
|
||||
|
||||
## Seiten
|
||||
|
||||
Startseite · Fotografie · Businessfotografie · Portrait & Model · Familien & Paare ·
|
||||
Minishootings · Video · Social Media · Projekte · Über · Kontakt · Impressum ·
|
||||
Datenschutz — plus eine eigene 404-Seite.
|
||||
|
||||
## Technische Entscheidungen
|
||||
|
||||
- **Schriften selbst gehostet.** Fraunces (Display) und Manrope (Text) werden als
|
||||
Google-Fonts-`woff2`-Subsets mitgeliefert, dazu die OFL-Lizenzen in `docs/`.
|
||||
Es wird nichts von `fonts.googleapis.com` geladen.
|
||||
- **Bilder als WebP in mehreren Breiten.** Erzeugt werden nur Breiten, die kleiner
|
||||
oder gleich dem Original sind — nichts wird hochskaliert.
|
||||
- **YouTube erst nach Klick.** Statt eines vorab geladenen iframes gibt es ein
|
||||
Vorschaubild; das eigentliche Video kommt per Klick über `youtube-nocookie.com`.
|
||||
- **Kontaktformular ohne Server.** Das Formular setzt aus den Eingaben lokal einen
|
||||
E-Mail-Entwurf zusammen. Ohne JavaScript greift `mailto:` als Fallback.
|
||||
Es gibt keinen API-Endpunkt und keine Datenübertragung an den Server.
|
||||
- **Keine Zugriffsprotokolle.** `nginx.conf` schaltet das Access-Log ab; es gibt
|
||||
keine Cookies, keine Analyse und keine externen Ressourcen.
|
||||
|
||||
## Herkunft der Inhalte
|
||||
|
||||
Die Bilder stammen aus dem eigenen Bilderpool des Betreibers und werden als
|
||||
bereits abgeleitete `web`-Variante geladen. Es werden nur Motive gezeigt, für die
|
||||
die Rechte vorliegen. Alle gezeigten Personen sind mit der Veröffentlichung
|
||||
einverstanden.
|
||||
Reference in New Issue
Block a user