- 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>
23 lines
477 B
PHP
23 lines
477 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Master-Shell. Erwartet: $meta (array), $content (string), $current (Slug der aktiven Route).
|
|
*/
|
|
?>
|
|
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<?php component('meta', ['meta' => $meta, 'current' => $current]); ?>
|
|
</head>
|
|
<body>
|
|
<a class="skip-link" href="#main">Zum Inhalt springen</a>
|
|
<?php component('header', ['current' => $current]); ?>
|
|
<main id="main">
|
|
<?= $content ?>
|
|
</main>
|
|
<?php component('footer'); ?>
|
|
</body>
|
|
</html>
|