Cette page présente mon curriculum vitæ dans un style rétro des années 90. Elle peut être ouverte localement en affichant index.html ou déployée sur GitHub Pages.
- Basculer entre mode sombre et clair avec le bouton en haut à droite
- Langue détectée automatiquement (fr/en) avec un bouton pour changer
- Support multilingue avec fichiers de traduction dans
locales/(français et anglais) au format YAML - Génération de PDFs haute qualité avec texte sélectionnable
- Déploiement automatique sur GitHub Pages
git clone <repo>
cd cv
npm install
npx playwright install --with-deps# Build complet (HTML + PDF)
npm run build
# Build uniquement le HTML
npm run build:web
# Build uniquement les PDFs
npm run build:pdfLes fichiers générés se trouvent dans :
dist/web/- Fichiers HTML et CSS (gitignored)dist/pdf/- Fichiers PDF (committés pour GitHub Pages)
npm run devOuvre le CV sur http://localhost:3000
cv/
├── dist/ # Dossier de build
│ ├── web/ # HTML/CSS générés (gitignored)
│ └── pdf/ # PDFs (committés)
├── build.config.json # Configuration des branches à builder
├── build.js # Script de build unifié
├── build-all-branches.js # Build multi-branches (CI)
├── locales/ # Fichiers de traduction YAML
│ ├── fr.yml
│ └── en.yml
├── fonts/ # Polices Inter
├── scripts/
│ ├── clean.js # Nettoyage des builds
│ └── migrate-to-dist.sh # Migration export/ → dist/
└── .github/workflows/
└── build-deploy.yml # CI/CD GitHub Actions
Le fichier build.config.json définit quelles branches sont buildées :
{
"branches": {
"main": {
"enabled": true,
"outputPath": "",
"displayName": "Version principale"
},
"360": {
"enabled": true,
"outputPath": "360",
"displayName": "Vue 360°"
}
}
}| Commande | Description |
|---|---|
npm run dev |
Démarre le serveur de développement local |
npm run build |
Build la branche courante (HTML + PDF) |
npm run build:web |
Build HTML uniquement |
npm run build:pdf |
Build PDFs uniquement |
npm run build:all-branches |
Build toutes les branches (utilisé par CI) |
npm run clean |
Nettoie tous les fichiers générés |
npm run clean:web |
Nettoie uniquement les fichiers web |
npm run clean:pdf |
Nettoie uniquement les PDFs |
Le workflow GitHub Actions (.github/workflows/build-deploy.yml) :
- Build toutes les branches configurées dans
build.config.json - Commit les PDFs dans
dist/pdf/(nécessaire pour les URLs stables) - Deploy
dist/web/vers GitHub Pages
Un second workflow (.github/workflows/build-pdf-commit.yml) :
- Se lance sur toutes les branches poussées
- Sauf branches techniques:
dependabot/**etrenovate/**
- Build les PDFs (
npm run build:pdf)
- Avec suppression du lien CV en ligne dans le PDF (flag
HIDE_ONLINE_CV_LINK=true) - Mode simplifié: sortie toujours dans
dist/pdf/(pas de sous-dossier lié à la branche) viaFORCE_FLAT_PDF_OUTPUT=true
- Commit automatiquement
dist/pdf/sur la branche
- Main :
https://etiennelescot.github.io/cv/ - Branch 360 :
https://etiennelescot.github.io/cv/360/ - PDFs :
https://etiennelescot.github.io/cv/pdf/cv-fr-dark.pdf
Le système génère des PDFs haute fidélité avec :
- ✅ Texte sélectionnable (pas juste une image)
- ✅ Rendu CSS pixel-perfect
- ✅ Support des thèmes (dark/light)
- ✅ Multi-langues (fr/en)
- Génération des HTML statiques via Playwright
- Capture avec CSS appliqué
- Export en PDF natif (vectoriel)
Les PDFs sont générés dans dist/pdf/ et committés dans Git car :
- Nécessaires pour les liens stables dans les pages HTML
- GitHub Actions artifacts expirent après 90 jours
- Pas d'alternative viable pour GitHub Pages
- Créez un fichier YAML dans
locales/(ex:es.ymlpour espagnol) - Copiez le contenu de
locales/en.ymlet traduisez - Ajoutez la locale dans
build.config.json:
{
"locales": ["fr", "en", "es"]
}- Rebuild :
npm run build
Pour ajouter une variante du CV (ex: version DevOps) :
- Créez la branche Git :
git checkout -b devops - Modifiez le contenu du CV
- Ajoutez la branche dans
build.config.json:
{
"branches": {
"devops": {
"enabled": true,
"outputPath": "devops",
"displayName": "DevOps Focus"
}
}
}- Le CI va automatiquement builder et déployer vers
/cv/devops/
# Nettoyer tous les fichiers générés
npm run clean
# Nettoyer uniquement les HTML
npm run clean:web
# Nettoyer uniquement les PDFs
npm run clean:pdf# Vérifier les dépendances
npm ci
npx playwright install --with-deps
# Nettoyer et rebuilder
npm run clean
npm run buildVérifiez que Playwright est installé :
npx playwright install --with-depsLes PDFs doivent être committés dans dist/pdf/ pour que les liens fonctionnent sur GitHub Pages.
git add dist/pdf/
git commit -m "Update PDFs"
git pushPour plus de détails sur l'architecture :
plans/build-ci-reconciliation.md- Plan complet de migrationplans/build-config-spec.md- Spécification de la configurationplans/implementation-comparison.md- Comparaison ancien/nouveau système
- Fork le projet
- Créez une branche feature :
git checkout -b feature/ma-feature - Commit :
git commit -m 'Add feature' - Push :
git push origin feature/ma-feature - Ouvrez une Pull Request
ISC