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 se déploie automatiquement sur push vers main.
Configuration des secrets :
- Aller dans Settings → Secrets → Actions
- Ajouter :
FTP_SERVER: adresse du serveur FTPFTP_USERNAME: nom d'utilisateurFTP_PASSWORD: mot de passeFTP_SERVER_DIR: répertoire de destination
# 1. Build de production
cd build-system
npm run build
# 2. Le site généré est dans _site/
# 3. Déployer _site/ sur votre hébergementTous 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