Johan LEROY
8b2d823fdf
feat(social): ajoute le lien SoundCloud (Hero, Contact, SEO) + lien site Arboretum
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
...
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
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
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
...
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
ce17bf590b
refonte: portfolio statique Astro (design moderne développeur)
...
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
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
d30e8e9376
prod setup
2026-05-04 11:00:44 +02:00
Johan LEROY
9e9bc0f23d
first commit
2026-04-21 14:14:03 +02:00