fix: update contact link in Footer and enhance Homelab services with new entries

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Puechberty Arthur
2026-04-30 19:10:16 +02:00
co-authored by Copilot
parent e558b707a2
commit ca50a70a71
3 changed files with 26 additions and 9 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ export default function Footer() {
<h4 className="font-semibold text-sm mb-4">Contact</h4> <h4 className="font-semibold text-sm mb-4">Contact</h4>
<div className="space-y-3"> <div className="space-y-3">
<a <a
href="https://contact.arthurp.fr" href="https://contact.arthurp.fr/?project=portfolio"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="flex items-center gap-2 text-sm text-muted hover:text-emphasis transition-colors" className="flex items-center gap-2 text-sm text-muted hover:text-emphasis transition-colors"
+24 -7
View File
@@ -9,6 +9,10 @@ import {
Monitor, Monitor,
Music, Music,
Search, Search,
Calendar,
EarthLock,
Router,
HousePlug,
} from "lucide-react"; } from "lucide-react";
const infra = [ const infra = [
@@ -48,27 +52,43 @@ const personalServices = [
{ {
icon: <Image size={20} className="text-pink-400" />, icon: <Image size={20} className="text-pink-400" />,
name: "Immich", name: "Immich",
url: "immich.arthurp.fr",
desc: "Gestionnaire de photos auto-hébergé — alternative à Google Photos.", desc: "Gestionnaire de photos auto-hébergé — alternative à Google Photos.",
}, },
{ {
icon: <Tv size={20} className="text-indigo-400" />, icon: <Tv size={20} className="text-indigo-400" />,
name: "Jellyfin", name: "Jellyfin",
url: "jellyfin.arthurp.fr",
desc: "Serveur multimédia auto-hébergé — films, séries, musique.", desc: "Serveur multimédia auto-hébergé — films, séries, musique.",
}, },
{ {
icon: <Music size={20} className="text-purple-400" />, icon: <Music size={20} className="text-purple-400" />,
name: "Navidrome", name: "Navidrome",
url: "navidrome.arthurp.fr",
desc: "Serveur de musique auto-hébergé — streaming de ma bibliothèque musicale.", desc: "Serveur de musique auto-hébergé — streaming de ma bibliothèque musicale.",
}, },
{ {
icon: <Search size={20} className="text-amber-400" />, icon: <Search size={20} className="text-amber-400" />,
name: "SearXNG", name: "SearXNG",
url: "searxng.arthurp.fr",
desc: "Moteur de recherche anonyme et décentralisé.", desc: "Moteur de recherche anonyme et décentralisé.",
}, },
{
icon: <HousePlug size={20} className="text-blue-400" />,
name: "Home Assistant",
desc: "Automatisation de la maison pour contrôler mes appareils connectés et créer des scénarios intelligents.",
},
{
icon: <Router size={20} className="text-red-400" />,
name: "OPNsense",
desc: "Firewall et routeur pour la sécurité de mon réseau domestique.",
},
{
icon: <EarthLock size={20} className="text-red-400" />,
name: "WireGuard VPN",
desc: "Accès sécurisé à mon réseau domestique depuis l'extérieur, même en déplacement.",
},
{
icon: <Calendar size={20} className="text-green-400" />,
name: "Radicale",
desc: "Serveur de calendrier et de contact pour la synchronisation des données.",
},
]; ];
export default function Homelab() { export default function Homelab() {
@@ -127,9 +147,6 @@ export default function Homelab() {
{svc.icon} {svc.icon}
<div> <div>
<h4 className="font-semibold text-sm">{svc.name}</h4> <h4 className="font-semibold text-sm">{svc.name}</h4>
<span className="text-[10px] text-dim font-mono">
{svc.url}
</span>
</div> </div>
</div> </div>
<p className="text-xs text-muted leading-relaxed"> <p className="text-xs text-muted leading-relaxed">
+1 -1
View File
@@ -116,7 +116,7 @@ export default function Sailing() {
{/* Highlights */} {/* Highlights */}
<div className="grid grid-cols-3 gap-2 sm:gap-3"> <div className="grid grid-cols-3 gap-2 sm:gap-3">
<div className="p-3 sm:p-4 rounded-xl border border-border bg-card text-center"> <div className="p-3 sm:p-4 rounded-xl border border-border bg-card text-center">
<div className="text-2xl font-bold text-emphasis">1</div> <div className="text-2xl font-bold text-emphasis">1er</div>
<div className="text-[10px] text-muted mt-1"> <div className="text-[10px] text-muted mt-1">
Champion de France Champion de France
</div> </div>