refonte: portfolio statique Astro (design moderne développeur)
Some checks failed
Deploy production / build-deploy (push) Failing after 56s
- Remplace l'ancien Astro hybrid + admin par un site one-page statique (sortie static) - Thème clair/sombre sans flash, contenu typé (src/data/content.ts), zéro admin - Icônes simple-icons (SVG monochrome), polices auto-hébergées (RGPD) - SEO complet : canonical, Open Graph, Twitter Card, JSON-LD Person, robots.txt, sitemap.xml, image OG 1200x630 - CI Gitea de déploiement FTPS vers Plesk (.gitea/workflows/prod.yml)
@@ -1,116 +0,0 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"id": "almeria",
|
||||
"company": "Almeria",
|
||||
"logo": "/api/files/img/company/almeria.png",
|
||||
"role": "Développeur",
|
||||
"period": "Depuis 2023",
|
||||
"duration": "3 ans",
|
||||
"description": "Conception et développement d'applications web et de logiciels d'intégration ERP.",
|
||||
"missions": [
|
||||
"Analyse, conception et développement d'applications web",
|
||||
"Création de logiciels d'intégration ERP",
|
||||
"Maintenance et évolution des applications existantes"
|
||||
],
|
||||
"stack": ["Angular", "Express.js", "NestJS", "SQL Server", "MariaDB"],
|
||||
"type": "cdi",
|
||||
"current": true
|
||||
},
|
||||
{
|
||||
"id": "cerema",
|
||||
"company": "CEREMA",
|
||||
"logo": "/api/files/img/company/cerema.png",
|
||||
"role": "Technicien évaluation mesure trafic & mobilité",
|
||||
"period": "2021 - 2023",
|
||||
"duration": "2 ans",
|
||||
"description": "Spécialisé dans l'installation de capteurs et l'analyse de données de mobilité.",
|
||||
"missions": [
|
||||
"Installation de capteurs provisoires dans le secteur mobilité",
|
||||
"Optimisation des données dans l'innovation d'outils numériques",
|
||||
"Analyse et traitement des données de trafic et mobilité"
|
||||
],
|
||||
"stack": ["Analyse de données", "PHP", "MariaDB"],
|
||||
"type": "cdd",
|
||||
"current": false
|
||||
},
|
||||
{
|
||||
"id": "sncf",
|
||||
"company": "Réseau SNCF",
|
||||
"logo": "/api/files/img/company/sncf.png",
|
||||
"role": "Agent télécom",
|
||||
"period": "2019 - 2021",
|
||||
"duration": "2 ans",
|
||||
"description": "Maintenance des équipements de sonorisation, d'affichage et de téléphonie sur le réseau ferroviaire.",
|
||||
"missions": [
|
||||
"Maintenance préventive et corrective des équipements",
|
||||
"Installation et réparation des systèmes d'affichage en gare",
|
||||
"Gestion des équipements téléphoniques sur les voies ferrées"
|
||||
],
|
||||
"stack": ["Télécommunications", "Maintenance", "Équipements audio", "Affichage dynamique"],
|
||||
"type": "cdi",
|
||||
"current": false
|
||||
},
|
||||
{
|
||||
"id": "novoferm",
|
||||
"company": "Novoferm",
|
||||
"logo": "/api/files/img/company/novoferm.png",
|
||||
"role": "Stage développeur",
|
||||
"period": "2019",
|
||||
"duration": "7 semaines",
|
||||
"description": "Stage de développement d'une application web qui permet de récupérer des fichiers stockés dans SharePoint. Réparation et configuration de PC, imprimantes et téléphones.",
|
||||
"missions": [],
|
||||
"stack": [],
|
||||
"type": "stage",
|
||||
"current": false
|
||||
},
|
||||
{
|
||||
"id": "pivotpoint",
|
||||
"company": "Pivot Point",
|
||||
"logo": "/api/files/img/company/pivotpoint.png",
|
||||
"role": "Stage développeur",
|
||||
"period": "2018",
|
||||
"duration": "1 semaine",
|
||||
"description": "Stage de développement d'un site internet en PHP.",
|
||||
"missions": [],
|
||||
"stack": ["PHP"],
|
||||
"type": "stage",
|
||||
"current": false
|
||||
},
|
||||
{
|
||||
"id": "actemium",
|
||||
"company": "Actemium",
|
||||
"logo": "/api/files/img/company/actemium.png",
|
||||
"role": "Stage développeur",
|
||||
"period": "2018",
|
||||
"duration": "1 semaine",
|
||||
"description": "Stage de développement d'applications Windows d'automatisation.",
|
||||
"missions": [],
|
||||
"stack": [],
|
||||
"type": "stage",
|
||||
"current": false
|
||||
}
|
||||
],
|
||||
"skills": {
|
||||
"technical": [
|
||||
"Développement Frontend",
|
||||
"Développement Backend",
|
||||
"Analyse et traitement de données",
|
||||
"Mise en production",
|
||||
"Analyse de base de données",
|
||||
"Modélisation UML",
|
||||
"Maquettage",
|
||||
"Sécurité"
|
||||
],
|
||||
"soft": [
|
||||
"Gestion de projets",
|
||||
"Travail en équipe",
|
||||
"Analyse de projets",
|
||||
"Communication",
|
||||
"Autonomie",
|
||||
"Organisation",
|
||||
"Adaptation",
|
||||
"Veille technologique"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"id": "cda-eni",
|
||||
"title": "Concepteur Développeur d'Applications",
|
||||
"school": "Campus ENI Nantes",
|
||||
"schoolUrl": "https://www.eni-ecole.fr",
|
||||
"period": "Depuis 2023",
|
||||
"description": "Formation sur la conception et le développement d'applications web et mobiles. Acquisition des compétences en architecture logicielle et gestion de projets informatiques."
|
||||
},
|
||||
{
|
||||
"id": "bts-sn",
|
||||
"title": "BTS Systèmes Numériques",
|
||||
"school": "Campus Saint Félix La Salle Nantes",
|
||||
"schoolUrl": "https://stfelixlasalle.fr",
|
||||
"period": "2021 - 2023",
|
||||
"description": "Formation technique supérieure en systèmes électroniques et informatiques, avec une spécialisation en informatique industrielle et en réseaux."
|
||||
},
|
||||
{
|
||||
"id": "bac-pro-sn",
|
||||
"title": "BAC PRO Systèmes Numériques",
|
||||
"school": "Campus Saint Félix La Salle Nantes",
|
||||
"schoolUrl": "https://stfelixlasalle.fr",
|
||||
"period": "2018 - 2021",
|
||||
"description": "Formation en systèmes électroniques et réseaux informatiques. Apprentissage des bases de l'installation et de la maintenance de systèmes numériques."
|
||||
},
|
||||
{
|
||||
"id": "brevet",
|
||||
"title": "Diplôme National du Brevet",
|
||||
"school": "Ensemble scolaire Saint Père en Retz",
|
||||
"schoolUrl": "https://www.ensemble-scolaire-saint-pere.fr",
|
||||
"period": "Avant 2018"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"items": [
|
||||
{ "id": "gaming", "label": "Jeux vidéo", "icon": "lucide:gamepad-2", "color": "violet" },
|
||||
{ "id": "movies", "label": "Films & Séries", "icon": "lucide:film", "color": "cyan" },
|
||||
{ "id": "dj", "label": "DJing / Tekno", "icon": "lucide:disc-3", "color": "magenta" },
|
||||
{ "id": "side", "label": "Projets personnels", "icon": "lucide:rocket", "color": "ice" }
|
||||
]
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
{
|
||||
"name": "Johan Leroy",
|
||||
"title": "Développeur",
|
||||
"tagline": "Dev le jour, DJ la nuit",
|
||||
"bio": "Développeur fullstack passionné par les technos modernes. J'aime créer des expériences web performantes, propres et scalables — et accessoirement mixer de la tekno quand l'écran s'éteint.",
|
||||
"available": true,
|
||||
"availableLabel": "Ouvert aux opportunités",
|
||||
"hero": {
|
||||
"photo": "/api/files/img/pp/pp3.png",
|
||||
"photos": [
|
||||
"/api/files/img/pp/pp1.png",
|
||||
"/api/files/img/pp/pp2.png",
|
||||
"/api/files/img/pp/pp3.png"
|
||||
],
|
||||
"roles": [
|
||||
"Dev",
|
||||
"DJ",
|
||||
"Dev"
|
||||
],
|
||||
"cta": [
|
||||
{
|
||||
"label": "Télécharger mon CV",
|
||||
"href": "/api/files/assets/cv.pdf",
|
||||
"variant": "primary",
|
||||
"external": true
|
||||
},
|
||||
{
|
||||
"label": "Voir mes projets",
|
||||
"href": "/projets",
|
||||
"variant": "ghost",
|
||||
"external": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"socials": {
|
||||
"email": "contact@johanleroy.fr",
|
||||
"github": "https://github.com/JohanLeroy",
|
||||
"gitea": "https://git.lidge.fr/johanleroy",
|
||||
"linkedin": "https://www.linkedin.com/in/johan-leroy-472409180/",
|
||||
"website": "https://johanleroy.fr"
|
||||
},
|
||||
"cv": "/api/files/assets/cv.pdf"
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"id": "techos",
|
||||
"title": "Techos",
|
||||
"subtitle": "Plateforme hébergement & domaines",
|
||||
"description": "Plateforme client + admin de gestion d'hébergement web et de domaines pour une association, construite par-dessus WHMCS. Design system Liquid Glass dark + light mode.",
|
||||
"image": "/api/files/img/projet/techos.png",
|
||||
"category": "web",
|
||||
"status": "live",
|
||||
"url": "https://techos-asso.fr",
|
||||
"stack": ["Next.js 16", "React 19", "NestJS 11", "TailwindCSS 4", "shadcn/ui", "Redis", "WHMCS API"],
|
||||
"featured": true
|
||||
},
|
||||
{
|
||||
"id": "amarea",
|
||||
"title": "Amarea Tattoo",
|
||||
"subtitle": "Site du studio de tatouage Amarea",
|
||||
"description": "Site vitrine et gestion pour un studio de tatouage. Architecture découplée SPA + REST API avec gestion de médias.",
|
||||
"image": "",
|
||||
"category": "web",
|
||||
"status": "live",
|
||||
"stack": ["Vue 3", "Vite", "NestJS 11", "TypeORM", "MariaDB", "Tailwind 4"],
|
||||
"featured": true
|
||||
},
|
||||
{
|
||||
"id": "lidge",
|
||||
"title": "Lidge",
|
||||
"subtitle": "Portail abonnements services auto-hébergés",
|
||||
"description": "Plateforme personnelle pour gérer les abonnements à mes services auto-hébergés (Jellyfin, Cloud, Vault, Mail, Messenger, Git…) avec SSO, tickets et workflow d'accès.",
|
||||
"image": "",
|
||||
"category": "web",
|
||||
"status": "live",
|
||||
"stack": ["Nuxt 3", "NestJS 11", "TypeORM", "MariaDB", "JWT", "Nodemailer"],
|
||||
"featured": true
|
||||
},
|
||||
{
|
||||
"id": "ksauce-bot",
|
||||
"title": "Bot Discord KSauce",
|
||||
"subtitle": "Bot communautaire Discord",
|
||||
"description": "Bot Discord développé pour la communauté KSauce. Gestion de commandes, modération et fonctionnalités sur-mesure.",
|
||||
"image": "",
|
||||
"category": "bot",
|
||||
"status": "live",
|
||||
"stack": ["Node.js", "TypeScript", "Discord.js"],
|
||||
"featured": false
|
||||
},
|
||||
{
|
||||
"id": "lplv",
|
||||
"title": "Liberty Pour La Vie",
|
||||
"subtitle": "Site associatif (archivé)",
|
||||
"description": "Développement d'un site web complet pour l'association Liberty Pour La Vie. Projet fermé, plus en ligne.",
|
||||
"image": "/api/files/img/projet/lplv.png",
|
||||
"category": "web",
|
||||
"status": "archived",
|
||||
"stack": ["Java Spring Boot", "Thymeleaf", "Bootstrap", "MariaDB"],
|
||||
"featured": false
|
||||
},
|
||||
{
|
||||
"id": "monvoisingeek",
|
||||
"title": "Mon Voisin Geek",
|
||||
"subtitle": "Site vitrine (archivé)",
|
||||
"description": "Développement d'un site web vitrine simple pour Mon Voisin Geek. Projet fermé, plus en ligne.",
|
||||
"image": "/api/files/img/projet/monvoisingeek.png",
|
||||
"category": "web",
|
||||
"status": "archived",
|
||||
"stack": ["Angular", "Tailwind CSS", "Express.js", "MariaDB"],
|
||||
"featured": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"title": "Johan Leroy — Portfolio",
|
||||
"description": "Développeur fullstack — NestJS, Nuxt, Next.js, Vue. Dev le jour, DJ la nuit.",
|
||||
"url": "https://johanleroy.fr",
|
||||
"keywords": [
|
||||
"johan leroy",
|
||||
"développeur fullstack",
|
||||
"nestjs",
|
||||
"nuxt",
|
||||
"nextjs",
|
||||
"vue",
|
||||
"angular",
|
||||
"tailwindcss",
|
||||
"portfolio",
|
||||
"développeur web",
|
||||
"freelance",
|
||||
"nantes"
|
||||
],
|
||||
"ogImage": "/api/files/img/logo/android-chrome-512x512.png",
|
||||
"features": {
|
||||
"hero3D": false,
|
||||
"smoothScroll": true,
|
||||
"customCursor": false,
|
||||
"partyMode": true
|
||||
}
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
{
|
||||
"primary": [
|
||||
{
|
||||
"id": "languages",
|
||||
"label": "Langages",
|
||||
"items": [
|
||||
{ "name": "TypeScript", "icon": "simple-icons:typescript", "level": "primary" },
|
||||
{ "name": "JavaScript", "icon": "simple-icons:javascript", "level": "primary" },
|
||||
{ "name": "Java", "icon": "simple-icons:openjdk", "level": "primary" },
|
||||
{ "name": "Python", "icon": "simple-icons:python", "level": "primary" },
|
||||
{ "name": "PHP", "icon": "simple-icons:php", "level": "primary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "frameworks",
|
||||
"label": "Frameworks",
|
||||
"items": [
|
||||
{ "name": "NestJS", "icon": "simple-icons:nestjs", "level": "primary" },
|
||||
{ "name": "Nuxt", "icon": "simple-icons:nuxt", "level": "primary" },
|
||||
{ "name": "Next.js", "icon": "simple-icons:nextdotjs", "level": "primary" },
|
||||
{ "name": "Vue.js", "icon": "simple-icons:vuedotjs", "level": "primary" },
|
||||
{ "name": "Angular", "icon": "simple-icons:angular", "level": "primary" },
|
||||
{ "name": "Tailwind CSS", "icon": "simple-icons:tailwindcss", "level": "primary" },
|
||||
{ "name": "Astro", "icon": "simple-icons:astro", "level": "primary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "databases",
|
||||
"label": "Bases de données",
|
||||
"items": [
|
||||
{ "name": "MariaDB", "icon": "simple-icons:mariadb", "level": "primary" },
|
||||
{ "name": "MySQL", "icon": "simple-icons:mysql", "level": "primary" },
|
||||
{ "name": "PostgreSQL", "icon": "simple-icons:postgresql", "level": "primary" },
|
||||
{ "name": "Redis", "icon": "simple-icons:redis", "level": "primary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "tools",
|
||||
"label": "Outils & DevOps",
|
||||
"items": [
|
||||
{ "name": "Docker", "icon": "simple-icons:docker", "level": "primary" },
|
||||
{ "name": "Git", "icon": "simple-icons:git", "level": "primary" },
|
||||
{ "name": "AWS", "icon": "simple-icons:amazonwebservices", "level": "primary" },
|
||||
{ "name": "Terraform", "icon": "simple-icons:terraform", "level": "primary" },
|
||||
{ "name": "NGINX", "icon": "simple-icons:nginx", "level": "primary" },
|
||||
{ "name": "Plesk", "icon": "simple-icons:plesk", "level": "primary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ide",
|
||||
"label": "IDE & Éditeurs",
|
||||
"items": [
|
||||
{ "name": "WebStorm", "icon": "simple-icons:webstorm", "level": "primary" },
|
||||
{ "name": "PhpStorm", "icon": "simple-icons:phpstorm", "level": "primary" },
|
||||
{ "name": "PyCharm", "icon": "simple-icons:pycharm", "level": "primary" },
|
||||
{ "name": "Claude Code", "icon": "simple-icons:claude", "level": "primary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "os",
|
||||
"label": "Systèmes",
|
||||
"items": [
|
||||
{ "name": "Debian", "icon": "simple-icons:debian", "level": "primary" },
|
||||
{ "name": "Ubuntu", "icon": "simple-icons:ubuntu", "level": "primary" },
|
||||
{ "name": "macOS", "icon": "simple-icons:macos", "level": "primary" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"secondary": [
|
||||
{
|
||||
"id": "languages-2",
|
||||
"label": "Autres langages",
|
||||
"items": [
|
||||
{ "name": "C#", "icon": "simple-icons:dotnet", "level": "secondary" },
|
||||
{ "name": "C++", "icon": "simple-icons:cplusplus", "level": "secondary" },
|
||||
{ "name": "Dart", "icon": "simple-icons:dart", "level": "secondary" },
|
||||
{ "name": "Kotlin", "icon": "simple-icons:kotlin", "level": "secondary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "frameworks-2",
|
||||
"label": "Autres frameworks",
|
||||
"items": [
|
||||
{ "name": "Spring", "icon": "simple-icons:spring", "level": "secondary" },
|
||||
{ "name": "Symfony", "icon": "simple-icons:symfony", "level": "secondary" },
|
||||
{ "name": "Express.js", "icon": "simple-icons:express", "level": "secondary" },
|
||||
{ "name": "FastAPI", "icon": "simple-icons:fastapi", "level": "secondary" },
|
||||
{ "name": "Flutter", "icon": "simple-icons:flutter", "level": "secondary" },
|
||||
{ "name": "GraphQL", "icon": "simple-icons:graphql", "level": "secondary" },
|
||||
{ "name": "Vuetify", "icon": "simple-icons:vuetify", "level": "secondary" },
|
||||
{ "name": "Bootstrap", "icon": "simple-icons:bootstrap", "level": "secondary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "databases-2",
|
||||
"label": "Autres bases",
|
||||
"items": [
|
||||
{ "name": "MongoDB", "icon": "simple-icons:mongodb", "level": "secondary" },
|
||||
{ "name": "SQLite", "icon": "simple-icons:sqlite", "level": "secondary" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cloud",
|
||||
"label": "Cloud & services",
|
||||
"items": [
|
||||
{ "name": "Firebase", "icon": "simple-icons:firebase", "level": "secondary" },
|
||||
{ "name": "Swagger", "icon": "simple-icons:swagger", "level": "secondary" },
|
||||
{ "name": "Postman", "icon": "simple-icons:postman", "level": "secondary" },
|
||||
{ "name": "Stripe", "icon": "simple-icons:stripe", "level": "secondary" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 3.8 KiB |
@@ -1,36 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
||||
<defs>
|
||||
<filter id="glow" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feGaussianBlur stdDeviation="1.2" result="blur" />
|
||||
<feMerge>
|
||||
<feMergeNode in="blur" />
|
||||
<feMergeNode in="SourceGraphic" />
|
||||
</feMerge>
|
||||
</filter>
|
||||
<linearGradient id="grad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#00F0FF" />
|
||||
<stop offset="100%" stop-color="#B967FF" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect
|
||||
x="4" y="4" width="56" height="56" rx="10"
|
||||
fill="#0A0A0F"
|
||||
stroke="url(#grad)"
|
||||
stroke-width="2"
|
||||
/>
|
||||
|
||||
<g filter="url(#glow)">
|
||||
<path
|
||||
d="M38 14 L38 40 Q38 48 30 48 Q22 48 22 40"
|
||||
stroke="#00F0FF"
|
||||
stroke-width="4"
|
||||
stroke-linecap="round"
|
||||
fill="none"
|
||||
/>
|
||||
<circle cx="38" cy="14" r="3" fill="#FF2A6D" />
|
||||
</g>
|
||||
|
||||
<line x1="8" y1="52" x2="56" y2="52" stroke="#00F0FF" stroke-width="0.5" opacity="0.3" />
|
||||
<line x1="8" y1="54" x2="56" y2="54" stroke="#FF2A6D" stroke-width="0.5" opacity="0.3" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
public/fonts/inter-400.woff2
Normal file
BIN
public/fonts/inter-500.woff2
Normal file
BIN
public/fonts/inter-600.woff2
Normal file
BIN
public/fonts/inter-700.woff2
Normal file
BIN
public/fonts/inter-800.woff2
Normal file
BIN
public/fonts/jetbrains-mono-400.woff2
Normal file
BIN
public/fonts/jetbrains-mono-500.woff2
Normal file
BIN
public/fonts/jetbrains-mono-600.woff2
Normal file
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
14
public/images/logo/LISEZMOI-logo.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
KIT LOGO — Johan Leroy (prêt pour le web)
|
||||
|
||||
Logo détouré (vraie transparence) à partir de ../../logo.png, puis décliné aux bons formats.
|
||||
|
||||
- logo.png Logo du header — JL vert, fond TRANSPARENT (392x320). OK thème clair ET sombre.
|
||||
- logo-master.png Master carré 1024x1024 transparent (pour régénérer d'autres tailles).
|
||||
- favicon-16x16.png Favicon 16 (transparent)
|
||||
- favicon-32x32.png Favicon 32 (transparent)
|
||||
- favicon.ico Favicon multi-tailles 16/32/48 (transparent)
|
||||
- apple-touch-icon.png 180x180, fond sombre #09090b (iOS ignore la transparence)
|
||||
- android-chrome-192x192.png 192, fond sombre #09090b (maskable, zone de sécurité)
|
||||
- android-chrome-512x512.png 512, fond sombre #09090b (maskable)
|
||||
|
||||
Source d'origine (fond damier non transparent) conservée à la racine du kit : ../../logo.png
|
||||
BIN
public/images/logo/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
public/images/logo/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
public/images/logo/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
public/images/logo/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 615 B |
BIN
public/images/logo/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
public/images/logo/favicon.ico
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
public/images/logo/logo-master.png
Normal file
|
After Width: | Height: | Size: 269 KiB |
BIN
public/images/logo/logo.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
public/images/og.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 862 KiB After Width: | Height: | Size: 862 KiB |
|
Before Width: | Height: | Size: 801 KiB After Width: | Height: | Size: 801 KiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 2.2 MiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 526 B |
|
Before Width: | Height: | Size: 881 B |
4
public/robots.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
Sitemap: https://johanleroy.fr/sitemap.xml
|
||||
9
public/sitemap.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://johanleroy.fr/</loc>
|
||||
<lastmod>2026-06-19</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
</urlset>
|
||||