feat(projets): cartes entièrement cliquables + logos adaptatifs clair/sombre
All checks were successful
Deploy production / build-deploy (push) Successful in 30s

- ProjectCard : carte = <a> (nouvel onglet) dès qu'un lien est défini,
  focus clavier accessible, hover de l'icône piloté par la carte
- Logos en object-fit:contain sur fond --surface adaptatif (cadrage « logo entier »)
- Nouveau champ Project.imgDark + swap CSS via [data-theme] (logo blanc en sombre)
- Liens : LPLV (live, libertypourlavie.fr), KSauce (ksauce.lidge.fr), Lidge (lidge.fr)
- Lidge : description sans Jellyfin/Mail → Cloud, Vault, Git
- Logos ajoutés : Amarea, Lidge, Arboretum (clair/sombre), KSauce (+ silhouette blanche générée), Techos (paire light/dark)
This commit is contained in:
Johan LEROY
2026-06-22 10:01:36 +02:00
parent 699353910f
commit a30d26aad4
11 changed files with 41 additions and 14 deletions

View File

@@ -15,6 +15,8 @@ export interface Project {
status: ProjectStatus;
link?: string;
img?: string;
/** Variante du logo pour le thème sombre (logo « blanc »). Si absent, `img` est utilisé partout. */
imgDark?: string;
}
export interface Experience {
@@ -86,6 +88,7 @@ export const projectsFeatured: Project[] = [
status: "live",
link: "https://techos-asso.fr",
img: "/images/projets/techos.png",
imgDark: "/images/projets/techos-dark.png",
},
{
id: "amarea",
@@ -95,15 +98,18 @@ export const projectsFeatured: Project[] = [
"Site vitrine + gestion pour un studio de tatouage. Architecture découplée SPA + API REST avec gestion de médias.",
stack: ["Vue 3", "Vite", "NestJS 11", "TypeORM", "MariaDB", "Tailwind 4"],
status: "live",
img: "/images/projets/amarea.png",
},
{
id: "lidge",
title: "Lidge",
subtitle: "Portail d'abonnements aux services auto-hébergés",
desc:
"Plateforme perso pour gérer les abonnements à mes services auto-hébergés (Jellyfin, Cloud, Vault, Mail, Git) avec SSO, tickets et workflow d'accès.",
"Plateforme perso pour gérer les abonnements à mes services auto-hébergés (Cloud, Vault, Git) avec SSO, tickets et workflow d'accès.",
stack: ["Nuxt 3", "NestJS 11", "TypeORM", "MariaDB", "JWT", "Nodemailer"],
status: "live",
link: "https://lidge.fr",
img: "/images/projets/lidge.png",
},
];
@@ -117,6 +123,8 @@ export const projectsOther: Project[] = [
stack: ["Node.js", "Vue 3", "TypeScript", "npx"],
status: "oss",
link: "https://github.com/JohanLeroy",
img: "/images/projets/arboretum.png",
imgDark: "/images/projets/arboretum-dark.png",
},
{
id: "ksauce",
@@ -126,14 +134,18 @@ export const projectsOther: Project[] = [
"Bot Discord pour la communauté KSauce : commandes, modération et fonctionnalités sur-mesure.",
stack: ["Node.js", "TypeScript", "Discord.js"],
status: "live",
link: "https://ksauce.lidge.fr/",
img: "/images/projets/ksauce.png",
imgDark: "/images/projets/ksauce-dark.png",
},
{
id: "lplv",
title: "Liberty Pour La Vie",
subtitle: "Site associatif",
desc: "Site web complet pour l'association Liberty Pour La Vie. Projet désormais fermé.",
desc: "Site web complet pour l'association Liberty Pour La Vie, toujours en ligne.",
stack: ["Java", "Spring Boot", "Thymeleaf", "Bootstrap", "MariaDB"],
status: "archived",
status: "live",
link: "https://libertypourlavie.fr/",
img: "/images/projets/lplv.png",
},
{