15 Commits

Author SHA1 Message Date
Johan LEROY
43e2640cd7 update projets add kys
All checks were successful
Deploy production / build-deploy (push) Successful in 35s
2026-07-21 11:32:44 +02:00
Johan LEROY
3504c3d219 update info
All checks were successful
Deploy production / build-deploy (push) Successful in 26s
2026-07-03 09:42:24 +02:00
Johan LEROY
155ab2977f feat(stack): grille complète (71 technos) en masonry centré + peaufinage UI
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
2026-06-27 13:46:53 +02:00
Johan LEROY
8b2d823fdf feat(social): ajoute le lien SoundCloud (Hero, Contact, SEO) + lien site Arboretum
All checks were successful
Deploy production / build-deploy (push) Successful in 24s
2026-06-25 07:23:22 +02:00
Johan LEROY
bd569658d1 refonte UI: navbar épurée, projets en liste unique, logo Gitea
All checks were successful
Deploy production / build-deploy (push) Successful in 25s
- header: retrait du bouton GitHub (desktop + mobile), reste dans Hero/Contact
- hero: bouton « Télécharger mon CV » désactivé, « Voir mes projets » promu en CTA principal
- projets: fusion phares/autres en une seule grille (ordre récent → ancien)
- contact: retrait du lien « site » (pointait vers le site courant)
- icônes: vrai logo Gitea (tasse) à la place du git-branch générique
- nettoyage du CSS/code mort (.is-other, .m-github, icône site)
2026-06-23 11:49:23 +02:00
Johan LEROY
c80783dfc4 qualiobee
All checks were successful
Deploy production / build-deploy (push) Successful in 26s
2026-06-22 11:17:13 +02:00
Johan LEROY
c7279d052e feat(projets): lien Amarea Tattoo (amarea-tattoo.fr) → carte cliquable
All checks were successful
Deploy production / build-deploy (push) Successful in 23s
2026-06-22 10:04:19 +02:00
Johan LEROY
a30d26aad4 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)
2026-06-22 10:01:36 +02:00
Johan LEROY
699353910f ci: corrige le déploiement FTPS (CN mismatch → ssl:check-hostname no)
All checks were successful
Deploy production / build-deploy (push) Successful in 1m48s
Cert Plesk valide (CA) mais CN != FTP_HOST. On conserve le chiffrement forcé
et la validation de chaîne, on tolère le nom d'hôte (choix validé par l'utilisateur).
2026-06-19 16:09:16 +02:00
Johan LEROY
ce17bf590b 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)
2026-06-19 16:03:09 +02:00
Johan LEROY
dc4e3820c4 ci: add Gitea Actions tests workflow (check + vitest + build)
Tourne sur push main/dev et pull_request. Runner node:22-bullseye.
Pas de deploy automatique : l'upload FTP reste manuel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 16:12:56 +02:00
Johan LEROY
c3db6bfa2b chore: harden security, clean deps, add vitest baseline
- .env.example: vider les secrets (à rotater côté Plesk)
- src/lib/auth.ts: fail-fast lazy si ADMIN_JWT_SECRET < 32 chars
- src/pages/api/upload.ts: retirer .svg (anti-XSS) + try/catch FS
- src/pages/api/content/[section].ts: masquer err.message (sauf ZodError)
- retirer gsap/three/@types/three/@react-three/{fiber,drei}/lucide-react
- bump astro 6.1.10 (GHSA-xr5h-phrj-8vxv)
- zod 4: z.email()/z.url() au lieu de .email()/.url()
- nettoyer vars inutilisées + Header script is:inline

Vitest (38 tests, 615ms):
- tests/lib/auth.test.ts: verifyPassword + verifySession (round-trip, secrets distincts)
- tests/lib/content.test.ts: load/save + comportement seed
- tests/api/files.test.ts: path traversal (../, /, imbriqué) + 200
- tests/api/upload.test.ts: extension/taille/sanitize folder + bucket
- tests/middleware.test.ts: gating admin pages vs APIs vs routes publiques
- astro check: 0 errors / 0 warnings / 0 hints

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 16:07:05 +02:00
Johan LEROY
9b7bc5334e prod setup 2026-05-04 12:05:08 +02:00
Johan LEROY
d30e8e9376 prod setup 2026-05-04 11:00:44 +02:00
Johan LEROY
9e9bc0f23d first commit 2026-04-21 14:14:03 +02:00