[ [ "title" => "Gitea", "description" => "Mein privates Git-Repository – Quellcode, Projekte & mehr.", "url" => "/git", "logo" => "/icons/gitea.svg", "color" => "#609926" ], [ "title" => "Nextcloud", "description" => "Meine persönliche Cloud – Dateien, Kalender & Kontakte.", "url" => "/nextcloud", "logo" => "/icons/nextcloud.svg", "color" => "#0082c9" ], ], "schule" => [ [ "title" => "Geizkragen.store", "description" => "Schulprojekt – Ein Online-Shop für Schnäppchenjäger.", "url" => "https://geizkragen.store", "logo" => "/icons/geizkragen.png", "color" => "#e8281e", "external" => true ], ], "dienste" => [ [ "title" => "Home Assistant", "description" => "Meine Smart-Home-Zentrale – Automatisierungen & Geräte.", "url" => "http://homeassistant.fabianschieder.com", "logo" => "/icons/homeassistant.svg", "color" => "#18BCF2", "external" => true ], [ "title" => "NAS", "description" => "Mein Netzwerkspeicher – Daten & Backups.", "url" => "http://nas.fabianschieder.com", "logo" => "/icons/nas.svg", "color" => "#a855f7", "external" => true ], ], ]; /** * Optional: Prüft serverseitig, ob die Logo-Datei existiert. * Verhindert Broken Images. */ function logoExists(string $webPath): bool { $base = rtrim($_SERVER['DOCUMENT_ROOT'] ?? '/var/www/fabianschieder.com', '/'); $full = $base . ltrim($webPath, '.'); // Debug: echo "\n"; return is_file($full); } ?>
Entwickler · Schüler · Macher