CV : Un dépôt, plusieurs parcours de publication
Ce site réunit des CV HTML bilingues, des données structurées, des pages À propos générées, des PDF LaTeX et un blog Hugo. La compilation rassemble ces sorties dans un déploiement statique sans backend applicatif public.
Langages du dépôtJavaScript 36.98%11
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| JavaScript | 584 457 | |
| HTML | 540 538 | |
| Python | 160 751 | |
| TeX | 129 462 | |
| CSS | 121 305 | |
| PowerShell | 15 654 |
5 autres langages
| Shell | 0.72% | 11 367 |
| Batchfile | 0.54% | 8 498 |
| Mermaid | 0.39% | 6 088 |
| Go Template | 0.1% | 1 539 |
| Jinja | 0.04% | 600 |
Aperçu
Pourquoi il existe
Portfolio et CV statique bilingue haute performance avec schémas AEO, CI/CD et zéro dépendance runtime.
Cas d’usage
Présentation professionnelle et vitrine technique d'ingénierie logicielle.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
cd hugo/themes/paper
npm ci
npm run build:css
cd ../..
hugo server -Dpython build_cv.py build --language en
python build_cv.py build --all
python build_cv.py build --all --parallel
python build_cv.py build --language en --output ./output/cv.pdf
python build_cv.py build --language en --clean
python build_cv.py build --language en --verbose
python build_cv.py build --all --cipython build_cv.py build --language enhelm install cv-stack ./helm/cv-stack
helm install cv-stack ./helm/cv-stack -f my-values.yaml
helm install cv-stack ./helm/cv-stack --namespace cv-stack --create-namespacecd tools/medium-mirror
npm install
npx playwright install chromiumCommandes déclarées dans les manifestes
Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Prerequisites
README.md
- Python 3.8+ (for build script)
- Docker (for LaTeX compilation)
- Git
Installation
README.md
- Clone the repository
- Install Python dependencies
- Build CV PDFs
- View locally
Local Development
README.md
- Set up environment (see Local Development Guide)
- Make changes to HTML or LaTeX files
- Test locally using a local HTTP server
- Rebuild PDFs if LaTeX files changed
- Commit and push changes
🚀 Quick Start
docs/README.md
- Local Development: See Setup Guide
- Deploy to GitHub Pages: See GitHub Pages Deployment
- Compile CV: See CV Compilation
Prerequisites
docs/setup/README.md
Before starting, ensure you have:
- Python 3.8+ - For the build script
- Docker - For LaTeX compilation (recommended)
- Git - For version control
- Text Editor - For editing files (VS Code, Vim, etc.) Optional but recommended:
- LaTeX Distribution - For local LaTeX compilation (alternative to Docker)
- Node.js - For alternative HTTP server
Configuration et utilisation
[Setup](./setup/README.md)
docs/README.md
Get started with the project - installation, requirements, and local development setup.
- Local Development - Set up your local environment
- Requirements - System requirements and dependencies
Setup Guide
docs/setup/README.md
Configuration
helm/cv-stack/README.md
The following table lists the configurable parameters and their default values:
| Parameter | Description | Default |
|---|---|---|
| namespace.name | Namespace name | cv-stack |
| namespace.create | Create namespace | true |
| cvSite.enabled | Enable CV site | true |
| cvSite.replicas | Number of CV site replicas | 2 |
| cvSite.image.repository | CV site image repository | nginx |
| cvSite.image.tag | CV site image tag | alpine |
| linktreeSite.enabled | Enable linktree site | true |
| linktreeSite.replicas | Number of linktree site replicas | 2 |
| linktreeSite.image.repository | Linktree site image repository | nginx |
| linktreeSite.image.tag | Linktree site image tag | alpine |
| traefik.enabled | Enable Traefik | true |
| traefik.replicas | Number of Traefik replicas | 1 |
| traefik.image.repository | Traefik image repository | traefik |
| traefik.image.tag… |
Build Script Usage
docs/development/README.md
- ✅ Always test builds locally before pushing
- ✅ Use –verbose flag when debugging
- ✅ Use –clean flag to remove auxiliary files
- ✅ Use –all –parallel for faster builds
- ✅ Check build statistics after compilation
- ✅ Review LaTeX warnings and fix when possible
Exploitation et dépannage
Deployment Issues
README.md
- GitHub Pages not updating: Check GitHub Actions workflow status
- Docker container issues: Check logs with docker-compose logs
- Kubernetes issues: Check pod status with kubectl get pods See Troubleshooting Guide for more details.
Recent Updates
README.md
- ✅ CV index: Conferences section with Graphquon logos (2024 + 2025); moved out of certifications list
- ✅ Added Graphquon 2024 and 2025 conference entries
- ✅ Updated Snapchat Lens statistics (13.97M plays, 20.38M views; blog post refreshed May 2026)
- ✅ Added DasherControl project
- ✅ Updated hass-renpho with dates
- ✅ Improved build script with parallel compilation support
- ✅ Enhanced documentation structure
Built with ❤️ using LaTeX, Docker, and modern web technologies
[Deployment](./deployment/README.md)
docs/README.md
Deploy the CV website to various platforms and environments.
- GitHub Pages - Deploy to GitHub Pages
- Docker - Docker-based deployment
- Kubernetes - Kubernetes deployment
Deployment Issues
docs/README.md
Problem: GitHub Pages not updating
- Solution: Check GitHub Actions workflow status
- Solution: Verify Pages is enabled in repository settings
- Solution: Check workflow logs for errors Problem: Docker container won’t start
- Solution: Check container logs: docker-compose logs
- Solution: Verify ports are not in use
- Solution: Check Docker daemon is running Problem: Kubernetes pods not running
- Solution: Check pod status: kubectl get pods -n cv-stack
- Solution: View logs: kubectl logs -n cv-stack
- Solution: Verify ingress is configured correctly
Deployment Guide
docs/deployment/README.md
Développement et contributions
🤝 Contributing
README.md
[Development](./development/README.md)
docs/README.md
Development workflows, processes, and best practices.
- CV Compilation - LaTeX CV compilation process
- GitHub Actions - GitHub Actions workflows
- Hugo blog (Paper theme) - Header, menus, i18n, baseURL, mobile menu, dark mode
Option 1: Simple Local Server (Recommended for Quick Testing)
docs/setup/README.md
2. Test Build Script
docs/setup/README.md
Development Guide
docs/development/README.md
Fonctions et composants 2
- Sources du contenu
- data/resume.en.json et resume.fr.json contiennent le CV lisible par machine. Les pages index HTML restent les sources de leur mise en page. data/aeo.yaml produit les pages À propos, tandis que Hugo gère les articles Markdown et les notes de projets.
- Assemblage et vérification
- build_docs.py prépare les pages et ressources, compile Hugo sous le chemin du blog, fusionne le sitemap et vérifie le déploiement avant de copier vers docs. Cette préparation empêche une compilation échouée d’écraser l’arbre publié.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- JSON du CV et données AEO
- CV et À propos générés
- CV HTML et PDF LaTeX
- Markdown Hugo
- Compilation de production préparée
- Site statique dans docs
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
subgraph group_resume["CV and Resume"]
node_buildcv["CV Compiler<br/>[build_cv.py]"]
node_latex_en["English LaTeX CV<br/>[resume.tex]"]
node_latex_fr["French LaTeX CV<br/>[resume.tex]"]
node_sections_en["English CV Sections"]
node_sections_fr["French CV Sections"]
node_pdf_en["English PDF Resume<br/>[resume.pdf]"]
node_pdf_fr["French PDF Resume<br/>[resume.pdf]"]
node_html_resume["HTML Resumes"]
node_cv_data["CV Data<br/>[cv.yaml]"]
end
subgraph group_content["Portfolio Content"]
node_hugo_content["Posts Projects Recipes"]
node_hugo_layouts["Blog Templates"]
node_papers["Papers and Publications"]
end
subgraph group_web["Website Experiences"]
node_hugo_site["Hugo Blog"]
node_linktree["Social Links Page"]
end
subgraph group_integration["External Integration"]
node_agent_worker["Agent-ready Home Worker<br/>[worker.mjs]"]
node_map_service["MapMyVisitors"]
end
node_visitor(("Site Visitor"))
node_visitor -->|"views resumes"| node_html_resume
node_visitor -->|"browses blog"| node_hugo_site
node_visitor -->|"opens links"| node_linktree
node_latex_en -->|"includes sections"| node_sections_en
node_latex_fr -->|"includes sections"| node_sections_fr
node_buildcv -->|"compiles source"| node_latex_en
node_buildcv -->|"compiles source"| node_latex_fr
node_buildcv -->|"produces PDF"| node_pdf_en
node_buildcv -->|"produces PDF"| node_pdf_fr
node_hugo_site -->|"renders content"| node_hugo_content
node_hugo_site -->|"uses templates"| node_hugo_layouts
node_visitor -.->|"reads publications"| node_papers
node_html_resume -->|"loads visitor map"| node_map_service
class node_buildcv,node_latex_en,node_latex_fr,node_sections_en,node_sections_fr,node_pdf_en,node_pdf_fr,node_html_resume,node_cv_data toneBlue
class node_hugo_content,node_hugo_layouts,node_papers toneAmber
class node_hugo_site,node_linktree toneMint
class node_agent_worker,node_map_service toneRose
class node_visitor toneIndigoUn CV et portfolio bilingue avec des CV HTML et PDF, un blogue Hugo, des publications, des liens sociaux et des routes lisibles par les agents. La compilation réunit le contenu édité, les données générées et les vérifications de déploiement.
- Composants
- 17
- Connexions
- 13
- Liens appuyés par le code ou le README
- 11/13
Version texte du diagramme
- JSON du CV et données AEO → CV et À propos générés
- CV et À propos générés → Compilation de production préparée
- CV HTML et PDF LaTeX → Compilation de production préparée
- Markdown Hugo → Compilation de production préparée
- Compilation de production préparée → Site statique dans docs
Suivre un parcours dans le code
Suivez une modification du blog depuis hugo/content vers Hugo, puis vers le dossier de préparation du déploiement. Le CV suit un autre parcours: modifier un JSON ne réécrit pas automatiquement toutes les sections HTML ou LaTeX manuelles.
Types et structure des fichiers
3 types déclarés, dont 3 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class tc629f4786497["LaTeXLogStats"] {
}
class tc217ab0df529["MergeRootSitemapTests"] {
test_flattens_sitemapindex_and_adds_static_pages()
test_urlset_passthrough()
}
class tb2eba65b8551["RenderResumeMdTests"] {
test_render_en_contains_required_headings()
test_all_locales_exit_zero()
}
class b539fd1ca9096["unittest.TestCase"] {
<<unresolved_base>>
}
b539fd1ca9096 <|-- tc217ab0df529
class b18f4b7dc7f0d["unittest.TestCase"] {
<<unresolved_base>>
}
b18f4b7dc7f0d <|-- tb2eba65b8551
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
LaTeXLogStats(class) ·build_cv.py:35MergeRootSitemapTests(class) ·scripts/tests/test_merge_root_sitemap.py:20Méthodes dans l’aperçu :
test_flattens_sitemapindex_and_adds_static_pages, test_urlset_passthrough.Bases déclarées :
unittest.TestCase.RenderResumeMdTests(class) ·scripts/tests/test_render_resume_md.py:17Méthodes dans l’aperçu :
test_render_en_contains_required_headings, test_all_locales_exit_zero.Bases déclarées :
unittest.TestCase.
Référence
43 / 43 fichiers admissibles lus (2646 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["CV"]
f0["scripts/deploy/build_docs.py"]
root --> f0
f1["README.md"]
root --> f1
f2["build_cv.py"]
root --> f2
f3["docker-compose.yml"]
root --> f3
f4["requirements.txt"]
root --> f4
f5["hugo/package.json"]
root --> f5
f6["scripts/README.md"]
root --> f6
f7["scripts/_repo.py"]
root --> f7
f8["helm/cv-stack/README.md"]
root --> f8
f9["scripts/ci/spellcheck.py"]
root --> f9
f10["scripts/ci/update_aspell_fr_pws.py"]
root --> f10
f11["scripts/ci/verify-deploy-lychee.sh"]
root --> f11
f12["scripts/ci/write_advisory_summary.sh"]
root --> f12
f13["scripts/deploy/merge_root_sitemap.py"]
root --> f13
f14["scripts/deploy/optimize_images.py"]
root --> f14
f15["scripts/html/extract_cv_css.py"]
root --> f15