Skip to content

EtienneLescot/cv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

268 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CV d'Etienne Lescot

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.

📋 Aperçu

  • 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

🚀 Démarrage rapide

Installation

git clone <repo>
cd cv
npm install
npx playwright install --with-deps

Build local

# Build complet (HTML + PDF)
npm run build

# Build uniquement le HTML
npm run build:web

# Build uniquement les PDFs
npm run build:pdf

Les fichiers générés se trouvent dans :

  • dist/web/ - Fichiers HTML et CSS (gitignored)
  • dist/pdf/ - Fichiers PDF (committés pour GitHub Pages)

Serveur de développement

npm run dev

Ouvre le CV sur http://localhost:3000

🏗️ Structure du projet

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

📦 Système de build

Configuration des branches

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°"
    }
  }
}

Commandes disponibles

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

🔄 Workflow CI/CD

Le workflow GitHub Actions (.github/workflows/build-deploy.yml) :

  1. Build toutes les branches configurées dans build.config.json
  2. Commit les PDFs dans dist/pdf/ (nécessaire pour les URLs stables)
  3. Deploy dist/web/ vers GitHub Pages

Un second workflow (.github/workflows/build-pdf-commit.yml) :

  1. Se lance sur toutes les branches poussées
  • Sauf branches techniques: dependabot/** et renovate/**
  1. 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) via FORCE_FLAT_PDF_OUTPUT=true
  1. Commit automatiquement dist/pdf/ sur la branche

URLs déployées

  • 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

📄 Génération de PDFs

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)

Comment ça marche ?

  1. Génération des HTML statiques via Playwright
  2. Capture avec CSS appliqué
  3. 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

🌍 Ajout de nouvelles langues

  1. Créez un fichier YAML dans locales/ (ex: es.yml pour espagnol)
  2. Copiez le contenu de locales/en.yml et traduisez
  3. Ajoutez la locale dans build.config.json :
{
  "locales": ["fr", "en", "es"]
}
  1. Rebuild : npm run build

🔧 Ajout d'une nouvelle branche

Pour ajouter une variante du CV (ex: version DevOps) :

  1. Créez la branche Git : git checkout -b devops
  2. Modifiez le contenu du CV
  3. Ajoutez la branche dans build.config.json :
{
  "branches": {
    "devops": {
      "enabled": true,
      "outputPath": "devops",
      "displayName": "DevOps Focus"
    }
  }
}
  1. Le CI va automatiquement builder et déployer vers /cv/devops/

🧹 Nettoyage

# 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

🐛 Dépannage

Le build échoue

# Vérifier les dépendances
npm ci
npx playwright install --with-deps

# Nettoyer et rebuilder
npm run clean
npm run build

Les PDFs ne sont pas générés

Vérifiez que Playwright est installé :

npx playwright install --with-deps

Les liens PDF sont cassés

Les 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 push

📚 Documentation technique

Pour plus de détails sur l'architecture :

🤝 Contribution

  1. Fork le projet
  2. Créez une branche feature : git checkout -b feature/ma-feature
  3. Commit : git commit -m 'Add feature'
  4. Push : git push origin feature/ma-feature
  5. Ouvrez une Pull Request

📝 License

ISC

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors