feat(stack): grille complète (71 technos) en masonry centré + peaufinage UI
All checks were successful
Deploy production / build-deploy (push) Successful in 24s
All checks were successful
Deploy production / build-deploy (push) Successful in 24s
Stack & icônes - grille unique enrichie (+24 technos) : React, TypeORM, Apache, Gitea, GitLab, GitHub Actions, Vite, pnpm, Socket.io, Chart.js, Discord.js, Prisma, Sequelize, IntelliJ IDEA, VS Code, Windows, HubSpot, HTML5/CSS3… - nouvelles catégories « Bases de données & ORM » et « Tests & Qualité » - 21 icônes simple-icons + tracés monochromes custom VS Code, Windows, Playwright ; support du fill-rule dans TechIcon - mise en page masonry (CSS columns) + titres et puces centrés Contenu & UI - Hero : retrait du badge « ouvert aux opportunités » - About / Contact : reformulation orientée projets - ProjectCard : statut « en développement » - typographie : tirets cadratins → virgules (titres, OG, aria-labels) - ajout du visuel public/images/logo/couverture.png
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
c'est ici que ça se passe. Tout est typé.
|
||||
============================================================ */
|
||||
|
||||
export type ProjectStatus = "live" | "archived" | "oss";
|
||||
export type ProjectStatus = "live" | "dev" | "archived" | "oss";
|
||||
|
||||
export interface Project {
|
||||
id: string;
|
||||
@@ -53,9 +53,9 @@ export const profile = {
|
||||
name: "Johan Leroy",
|
||||
role: "Développeur fullstack",
|
||||
lede:
|
||||
"Je conçois et développe des applications web performantes, propres et scalables — du front jusqu'à la mise en production. Basé à Nantes, profil « builder » : open-source, auto-hébergement, projets perso.",
|
||||
"Je conçois et développe des applications web performantes, propres et scalables, du front jusqu'à la mise en production. Basé à Nantes, profil « builder » : open-source, auto-hébergement, projets perso.",
|
||||
bio:
|
||||
"Développeur fullstack passionné par les technologies modernes. J'aime construire des produits complets — penser l'archi, soigner l'expérience, déployer et maintenir. J'expérimente en continu via mes projets perso, mes services auto-hébergés et l'open-source.",
|
||||
"Développeur fullstack passionné par les technologies modernes, j'aime construire des produits complets : penser l'architecture, soigner l'expérience, déployer et maintenir. J'expérimente en continu via mes projets perso, mes services auto-hébergés et l'open-source.",
|
||||
};
|
||||
|
||||
export const social = {
|
||||
@@ -86,7 +86,7 @@ export const projects: Project[] = [
|
||||
desc:
|
||||
"Plateforme client + admin de gestion d'hébergement web et de domaines pour une association, bâtie sur WHMCS. Design system « Liquid Glass » clair/sombre.",
|
||||
stack: ["Next.js 16", "React 19", "NestJS 11", "Tailwind 4", "shadcn/ui", "Redis", "WHMCS API"],
|
||||
status: "live",
|
||||
status: "dev",
|
||||
link: "https://techos-asso.fr",
|
||||
img: "/images/projets/techos.png",
|
||||
imgDark: "/images/projets/techos-dark.png",
|
||||
@@ -94,9 +94,9 @@ export const projects: Project[] = [
|
||||
{
|
||||
id: "amarea",
|
||||
title: "Amarea Tattoo",
|
||||
subtitle: "Site du studio de tatouage Amarea",
|
||||
subtitle: "Site d'une tatoueuse indépendante",
|
||||
desc:
|
||||
"Site vitrine + gestion pour un studio de tatouage. Architecture découplée SPA + API REST avec gestion de médias.",
|
||||
"Site vitrine + gestion pour une tatoueuse indépendante. Architecture découplée SPA + API REST avec gestion de médias.",
|
||||
stack: ["Vue 3", "Vite", "NestJS 11", "TypeORM", "MariaDB", "Tailwind 4"],
|
||||
status: "live",
|
||||
link: "https://amarea-tattoo.fr",
|
||||
@@ -180,7 +180,7 @@ export const experiences: Experience[] = [
|
||||
company: "Almeria",
|
||||
logo: "/images/entreprises/almeria.png",
|
||||
role: "Développeur",
|
||||
period: "2023 — 2025",
|
||||
period: "2023–2025",
|
||||
duration: "2 ans",
|
||||
desc: "Conception et développement d'applications web et de logiciels d'intégration ERP.",
|
||||
missions: [
|
||||
@@ -193,8 +193,8 @@ export const experiences: Experience[] = [
|
||||
{
|
||||
company: "CEREMA",
|
||||
logo: "/images/entreprises/cerema.png",
|
||||
role: "Technicien évaluation — mesure trafic & mobilité",
|
||||
period: "2021 — 2023",
|
||||
role: "Technicien évaluation, mesure trafic & mobilité",
|
||||
period: "2021–2023",
|
||||
duration: "2 ans",
|
||||
desc: "Installation de capteurs et analyse de données de mobilité.",
|
||||
missions: [
|
||||
@@ -208,7 +208,7 @@ export const experiences: Experience[] = [
|
||||
company: "Réseau SNCF",
|
||||
logo: "/images/entreprises/sncf.png",
|
||||
role: "Agent télécom",
|
||||
period: "2019 — 2021",
|
||||
period: "2019–2021",
|
||||
duration: "2 ans",
|
||||
desc:
|
||||
"Maintenance des équipements de sonorisation, d'affichage et de téléphonie sur le réseau ferroviaire.",
|
||||
@@ -255,20 +255,20 @@ export const experiences: Experience[] = [
|
||||
export const formation: Formation[] = [
|
||||
{
|
||||
title: "Concepteur Développeur d'Applications",
|
||||
school: "Campus ENI — Nantes",
|
||||
school: "Campus ENI, Nantes",
|
||||
period: "Depuis 2023",
|
||||
desc: "Conception & dév d'applications web/mobiles, architecture logicielle, gestion de projet.",
|
||||
},
|
||||
{
|
||||
title: "BTS Systèmes Numériques",
|
||||
school: "Saint Félix La Salle — Nantes",
|
||||
period: "2021 — 2023",
|
||||
school: "Saint Félix La Salle, Nantes",
|
||||
period: "2021–2023",
|
||||
desc: "Systèmes électroniques & informatiques, informatique industrielle & réseaux.",
|
||||
},
|
||||
{
|
||||
title: "BAC PRO Systèmes Numériques",
|
||||
school: "Saint Félix La Salle — Nantes",
|
||||
period: "2018 — 2021",
|
||||
school: "Saint Félix La Salle, Nantes",
|
||||
period: "2018–2021",
|
||||
desc: "Systèmes électroniques & réseaux, installation & maintenance.",
|
||||
},
|
||||
{
|
||||
@@ -278,20 +278,16 @@ export const formation: Formation[] = [
|
||||
},
|
||||
];
|
||||
|
||||
export const stackMain: StackGroup[] = [
|
||||
{ label: "Langages", items: ["TypeScript", "JavaScript", "Java", "Python", "PHP"] },
|
||||
{ label: "Frameworks", items: ["NestJS", "Nuxt", "Next.js", "Vue.js", "Angular", "Tailwind CSS", "Astro"] },
|
||||
{ label: "Bases de données", items: ["MariaDB", "MySQL", "PostgreSQL", "Redis"] },
|
||||
{ label: "Outils & DevOps", items: ["Docker", "Git", "AWS", "Terraform", "NGINX", "Plesk"] },
|
||||
{ label: "IDE & Éditeurs", items: ["WebStorm", "PhpStorm", "PyCharm", "Claude Code"] },
|
||||
{ label: "Systèmes", items: ["Debian", "Ubuntu", "macOS"] },
|
||||
];
|
||||
|
||||
export const stackSecondary: StackGroup[] = [
|
||||
{ label: "Langages", items: ["C#", "C++", "Dart", "Kotlin"] },
|
||||
{ label: "Frameworks & libs", items: ["Spring", "Symfony", "Express.js", "FastAPI", "Flutter", "GraphQL", "Vuetify", "Bootstrap"] },
|
||||
{ label: "Bases de données", items: ["MongoDB", "SQLite"] },
|
||||
{ label: "Services & outils", items: ["Firebase", "Swagger", "Postman", "Stripe"] },
|
||||
/* Grille unique, groupée par catégorie (technos « cœur » d'abord, puis le reste). */
|
||||
export const stack: StackGroup[] = [
|
||||
{ label: "Langages", items: ["TypeScript", "JavaScript", "Java", "Python", "PHP", "C#", "C++", "Dart", "Kotlin", "HTML5", "CSS3"] },
|
||||
{ label: "Frameworks & libs", items: ["NestJS", "Nuxt", "Next.js", "React", "Vue.js", "Angular", "Astro", "Tailwind CSS", "Spring", "Symfony", "Express.js", "FastAPI", "Flutter", "GraphQL", "Socket.io", "Chart.js", "Discord.js", "Vuetify", "Bootstrap"] },
|
||||
{ label: "Bases de données & ORM", items: ["MariaDB", "MySQL", "PostgreSQL", "Redis", "MongoDB", "SQLite", "TypeORM", "Prisma", "Sequelize"] },
|
||||
{ label: "Outils & DevOps", items: ["Docker", "Git", "Gitea", "GitLab", "GitHub Actions", "AWS", "Terraform", "NGINX", "Apache", "Vite", "pnpm", "Plesk"] },
|
||||
{ label: "Tests & Qualité", items: ["Jest", "Vitest", "Playwright", "ESLint", "Prettier"] },
|
||||
{ label: "Services & outils", items: ["Firebase", "Swagger", "Postman", "Stripe", "HubSpot"] },
|
||||
{ label: "IDE & Éditeurs", items: ["WebStorm", "PhpStorm", "PyCharm", "IntelliJ IDEA", "VS Code", "Claude Code"] },
|
||||
{ label: "Systèmes", items: ["Debian", "Ubuntu", "Windows", "macOS"] },
|
||||
];
|
||||
|
||||
export const softTech = [
|
||||
@@ -330,6 +326,5 @@ $ cat about.json
|
||||
"name": "Johan Leroy",
|
||||
"role": "Développeur fullstack",
|
||||
"stack": ["TypeScript", "NestJS", "Nuxt", "Next.js"],
|
||||
"location": "Nantes, France",
|
||||
"status": "ouvert aux opportunités"
|
||||
"location": "Nantes, France"
|
||||
}`;
|
||||
|
||||
Reference in New Issue
Block a user