feat: reposition desfoto as an independent brand with four Arbeitsbereiche

This commit is contained in:
desfoto automation
2026-09-19 19:14:42 +02:00
parent 96247da074
commit 68613788b8
86 changed files with 1287 additions and 756 deletions

View File

@@ -12,11 +12,17 @@ hotlink its assets. Linking out to it from the footer is an explicit operator
request and is the only permitted reference (see "Editing rules").
## Structure
- `/` — hero, two pillars (**Shootings** = photo, **Videoprojekte** = video), portfolio
gallery, music video, mobiles Studio, process, facts.
- `/shootings/` — the umbrella for all photographic work: Businessfotografie,
Portrait & Model, Familien & Paare, Minishootings, plus the mobiles Studio.
`/fotografie` and `/fotografie/` are 301-redirected here by `nginx.conf`.
- `/` — hero, the four **Arbeitsbereiche** (Fotografie, Video, Musik & Bühne, Projekte),
the bookable services ("Was du bei mir buchen kannst"), the portfolio gallery
("Was ich außerdem mache"), music video, mobiles Studio, process, facts.
- `/fotografie/` — the umbrella for all photographic work: Businessfotografie,
Portrait & Model, Familie, Minishootings, plus the mobiles Studio.
`/shootings`, `/shootings/` and `/shootings.html` are 301-redirected here by
`nginx.conf`, and the old `/fotografie.html` is canonicalised to `/fotografie/`.
- `/familie/` — family photography (no couples: Paare and Engagement stay on
`dennyschulz.de`). `/familien-und-paare`, `/familien-und-paare/` and
`/familien-und-paare.html` are 301-redirected here.
- `/musik-und-buehne/` — concerts, band portraits and the Thjódrörir music video.
- `/video/`, `/social-media/`, `/projekte/` (music + free work + pro bono), `/ueber/`.
## Commands
@@ -64,8 +70,19 @@ request and is the only permitted reference (see "Editing rules").
the content stays hidden forever. `.reveal--mask` therefore clips its children.
- Never nest `<a>` inside `<a>` (or any other invalid nesting). The parser closes the
outer anchor and the surrounding grid falls apart — that is what happened to the
two homepage pillars. Cards with their own links use the stretched-link pattern
(`.pillar__go::after`); `tests/test_site.py` guards this for every page.
two homepage pillars the redesign replaced. Cards with their own links use the
stretched-link pattern (`.pillar__go::after`, `.link-arrow`) or keep the link in
the card foot; `tests/test_site.py` guards this for every page.
- **Brand separation:** `desfoto` is the brand, `Denny Schulz Fotografie` is only the
legal entity. The legal name may appear in the Impressum, the Datenschutz page and
the JSON-LD `legalName` — nowhere else. The footer carries exactly one ownership
sentence (`SITE["ownership"]`). Couples, engagements and weddings are advertised on
`dennyschulz.de` only; desfoto shows single-person portraits, family and business
work, and no couple imagery may be added back to `src/images.json`.
- `/fotografie/` is the umbrella term for the photographic work ("Shooting" is not a
section label any more). Renaming a route means updating `pages.ROUTES`,
`nginx.conf` (301 from the old URL) and `scripts/build-site.py:ROUTE_OG`;
the build prunes the retired page from `site/` automatically.
- Two-space indentation, `from __future__ import annotations`, type hints on public
functions, no new third-party Python packages (Pillow is the only dependency).