Files
tsv08kulmbach-website/app/pages/home.php
Felix Schneider 0f19729a88 Neubau Fundament + Startseite: Designsystem, PHP-Komponenten, Brevo-Formular, Instagram-Sync
- Ordnerstruktur mit public/-Docroot, Deny-.htaccess für app/bin/config/data/storage
- CLAUDE.md mit Leitplanken (self-hosted only, Single Source of Truth, Component-first)
- Design-Tokens aus alter Seite extrahiert (Akzent #e20612, Coolvetica/Abel als woff2)
- Front Controller mit Routen-Register, Sitemap, Canonical, JSON-LD (SportsClub)
- Startseite: Hero, Instagram-Feed (lokaler Cache), Historie/Sportheim, Stats, Partner, Kontakt
- Kontaktformular via PHPMailer/Brevo mit Honeypot + HMAC-Time-Trap (kein reCAPTCHA)
- bin/instagram-sync.php: Scraper mit Strategie-Kette, flock, atomarem Cache, lokalen Bildern

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 21:16:44 +02:00

29 lines
837 B
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
/**
* Startseite — Sektions-Reihenfolge wie auf der alten Seite:
* Hero → Aktuelles (Instagram) → Historie → Sportheim → Zahlen → Partner → Kontakt.
* Inhalte: data/home.json (Single Source of Truth).
*/
$home = json_load('home');
$meta = [
'title' => 'TSV 08 Kulmbach Fußball & Turnen in Kulmbach',
'title_absolute' => true,
'description' => json_load('club')['description'],
'scripts' => ['form.js'],
];
component('hero', ['hero' => $home['hero']]);
component('instagram-feed');
foreach ($home['sections'] as $section) {
component('section', ['section' => $section]);
}
component('stats', ['stats' => $home['stats']]);
component('partner-grid', ['intro' => $home['partners']]);
component('contact-form', ['intro' => $home['contact']]);