feat(projets): cartes entièrement cliquables + logos adaptatifs clair/sombre
All checks were successful
Deploy production / build-deploy (push) Successful in 30s
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:
@@ -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",
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user