Portfolio personnel présentant mes projets en valorisation de données, automatisation et solutions no-code.
Site statique généré automatiquement à partir de fichiers Markdown, avec :
- SEO optimisé : sitemap XML, structured data, Open Graph
- Déploiement automatique via GitHub Actions
- Gestion dynamique des projets et catégories
- Performance : lazy loading, fichiers optimisés
.
├── build-system/ # Système de build automatisé
│ ├── build.js # Script principal
│ ├── lib/ # Modules (markdown, SEO, tags...)
│ ├── templates/ # Templates Handlebars
│ └── README.md # Documentation complète
│
├── projets/ # Projets du portfolio
│ └── [slug]/
│ └── index.md # Contenu + frontmatter
│
├── css/ # Styles
├── js/ # Scripts front-end
├── images/ # Images
├── index.html # Page d'accueil
└── .github/
└── workflows/
└── deploy.yml # CI/CD GitHub Actions
- Node.js 18+
- npm ou yarn
# 1. Cloner le repo
git clone https://github.com/votre-username/portfolio.git
cd portfolio
# 2. Installer les dépendances
cd build-system
npm install- Créer le dossier projet :
mkdir projets/nom-du-projet- Créer le fichier
index.mdavec ce frontmatter :
---
title: "Titre du projet"
description: "Description SEO (120-160 caractères)"
hero_image: "images/hero.png"
date: "2025-01-15"
status: "published"
categories: ["Automatisation", "Python"]
tags: ["API", "IA"]
github_url: "https://github.com/..." # optionnel
---
# Contenu du projet
Votre contenu en Markdown...- Builder le site :
cd build-system
npm run build# Build complet
npm run build
# Mode développement (watch)
npm run dev
# Valider les projets
npm run validate
# Nettoyer les fichiers générés
npm run clean
# Migrer anciens projets (une fois)
npm run migrateLe site est buildé et publié automatiquement sur GitHub Pages à chaque push sur main.
Configuration GitHub :
- Aller dans
Settings→Pages - Dans
Build and deployment, sélectionnerGitHub Actions - Optionnel : ajouter dans
Settings→Secrets and variables→Actionsles variables suivantes :SITE_URL: URL publique finale du site, par exemplehttps://smeets.devCNAME_DOMAIN: domaine personnalisé à écrire dans le fichierCNAME, par exemplesmeets.dev
Si SITE_URL n'est pas définie, le workflow utilise automatiquement l'URL GitHub Pages par défaut du dépôt.
# 1. Installer les dépendances du build system
cd build-system
npm install
cd ..
# 2. Générer le build de production complet
NODE_ENV=production node .github/scripts/build-production.js
# 3. Le site prêt à publier est dans _site/Tous les champs disponibles pour index.md :
---
# Obligatoire
title: "Titre du projet"
description: "Description (SEO optimal: 120-160 chars)"
date: "2025-01-15"
# Images
hero_image: "images/hero.png" # Image principale
# Organisation
status: "published" # draft | published | archived
featured: true # Mettre en avant
categories: ["Cat1", "Cat2"] # Catégories principales
tags: ["tag1", "tag2"] # Tags secondaires
tech_stack: ["Python", "Docker"] # Technologies utilisées
# Liens
github_url: "https://github.com/..."
demo_url: "https://demo.com"
# SEO (auto-généré si omis)
seo_title: "Titre SEO personnalisé"
seo_description: "Description personnalisée"
keywords: ["mot-clé1", "mot-clé2"]
# Métadonnées
duration: "2 semaines"
client: "Personnel"
---- Styles : éditer
css/style.css - Template projet : éditer
build-system/templates/project.hbs - Page d'accueil : éditer
index.html
Consulter la documentation complète du build system
Le build génère :
projets/index.json- Index des projetsprojets/*/index.html- Pages HTML des projetssitemap.xml- Sitemap XMLrobots.txt- Directives pour robotsstructured-data.json- Schema.orgseo-report.json- Rapport SEO