🚀 Créer son portfolio web, pas à pas

HTML5 · Bootstrap 5 · Git · Render · GitHub Pages

Retour au portfolio
Le parcours en 3 phasesDu code sur votre ordinateur à un site visible par tous
🔁
Résumé

Le cycle complet

De A à Z sur une seule page

10 étapes, A à J

🔁Cycle complet de A à Z

Du dossier vide au site en ligne, sans rien oublier.

1. Les 3 lieux en un coup d'œil

Mon ordinateurVS Code + Git
  • 📁 le dossier portfolio
  • ✏️ vous écrivez le code
  • 💾 Git garde l'historique
git push
portfoliomaincssimgindex.htmlInitial commitInitial commitInitial commit✓GitHubLe dépôt en ligne
  • 📦 une copie de votre code
  • 🕘 tout l'historique
  • 🔗 relié à Render
déploiement auto
….onrender.comRenderLe site publié
  • ⚙️ lit le dépôt GitHub
  • 🚀 publie en ~30 s
  • 🌍 donne l'URL publique

2. Le film du parcours : A → J

3. Ce que vous devez voir à chaque phase

127.0.0.1:5500/index.html
✅ Phase 1 : votre page s'affiche avec Live Server
github.com/VOTRE-PSEUDO/portfolio
VOTRE-PSEUDO / portfolioPublic
⎇ main
  • 📁 cssInitial commit
  • 📁 imgInitial commit
  • 📄 index.htmlInitial commit
✅ Phase 2 : vos fichiers apparaissent sur GitHub
dashboard.render.com
portfolio● Live
https://portfolio-xxxx.onrender.com
⎇ main · a1b2c3d Initial commit
✅ Phase 3 : le service est « Live » et l'URL s'ouvre

4. Toutes les commandes, dans l'ordre

5. La boucle de chaque jour

✏️ Modifier ➕ git add 💾 git commit ☁️ git push 🚀 Déploie 🌍 Recharger ↻≈ 1 minute
Bleu : sur votre ordinateur · violet : GitHub · vert : Render (30 s). Rechargez avec Ctrl + F5.

6. Pièges fréquents et solutions

git: 'add.' is not a git command
Il manque l'espace avant le point.
✓ git add .
error: src refspec main does not match any
Aucun commit n'existe encore sur la branche.
✓ git add . puis git commit -m "Initial commit"
Using 'master' as the name for the initial branch
Git crée « master » par défaut.
✓ git branch -M main
Author identity unknown
Git ne connaît pas encore votre nom.
✓ git config --global user.name "Prénom Nom" et user.email
Permission denied to … 403
Windows a mémorisé un autre compte GitHub.
✓ cmdkey /delete:git:https://github.com puis relancer le push avec le bon compte
Render : « Not Found »
Mauvaise URL (suffixe ajouté) ou pas de fichier index.html.
✓ Copiez l'URL exacte du tableau de bord. Vérifiez index.html à la racine (pas index.php).
Une fois le site en ligne, vous ne répétez que la boucle : modifier, add, commit, push.
🧭
Avant de commencer

Pourquoi un portfolio ?

CV, portfolio, LinkedIn : le rôle de chacun

1 lecture

⚖️CV, ATS, LinkedIn, portfolio : la différence

4 outils, 4 questions auxquelles un recruteur cherche une réponse.

1. Les 4 outils face à face

CV classique

Convaincre le recruteur
« Son parcours est-il intéressant et professionnel ? »
  • Lu parRecruteur / RH
  • ContientExpériences, études, compétences
  • Où l'utiliserEntretien, contact direct, dossier pro
✓✓

CV ATS

Décrocher le filtre
« Correspond-elle techniquement à l'offre ? »
  • Lu parLogiciel, puis recruteur
  • ContientMots-clés + structure simple
  • Où l'utiliserIndeed, Easy Apply, plateformes, e-mail

LinkedIn

Être visible
« Qui est cette personne, quelle est son activité ? »
  • Lu parRecruteurs, entreprises, réseau
  • ContientProfil, expériences, posts, recommandations
  • Où l'utiliserProfil complet, projets, certifications

Portfolio

Démontrer
« Sait-elle vraiment développer ? Montrez-moi. »
  • Lu parClient, recruteur, entreprise
  • ContientProjets, démos, captures, technologies
  • Où l'utiliserProjets, démos, GitHub, contact

2. Quelle situation, quel outil ?

3. Comment ils travaillent ensemble

👤 Votre profil pro🤖 CV ATSCandidatures💼 LinkedInRéseau🌐 PortfolioPreuves, projets🎯 Opportunités
Trois outils qui travaillent ensemble. Le 📄 CV classique sert pour l'entretien et le contact direct.

4. Tableau comparatif

Critère📄 CV classique🤖 CV ATS💼 LinkedIn🌐 Portfolio
FormatPDF, 1 à 2 pagesPDF simple, 1 à 2 pagesProfil en ligneSite web
Montre des projets réels✗✗~✓
Mots-clés de l'offre~✓✓~
Design libre✓✗✗✓
Être trouvé sans candidater✗✗✓~
Mise à jourÀ chaque candidatureÀ chaque offreChaque moisÀ chaque projet
🤖 CV ATS › décrocher le filtre📄 CV classique › convaincre le recruteur💼 LinkedIn › être visible🌐 Portfolio › démontrer

5. Exemples concrets

✓ COMPÉTENCES : PHP, Laravel, MySQL, Git, REST API✗ 💻 Expert Web
✓ Développeur Full Stack | Laravel & PHP | React Native | Formateur✗ Full Stack Developer
Haut : un CV ATS aligne les mots-clés. Bas : un titre LinkedIn précis fait ressortir votre profil dans les recherches.

6. Plan d'un portfolio complet

🏠 Accueil
👤 À propos🛠️ Compétences💼 Expérience📁 ProjetsLaravelReact NativePHP / MySQLIA🎓 Formations🖼️ Galerie🐙 GitHub✉️ Contact
Mettez l'URL de votre portfolio dans votre CV et dans votre profil LinkedIn. Détails ATS : section « CV lu par une IA ».
🎯 À vous de jouerAjoutez l'URL de votre portfolio (Render) dans l'en-tête de votre CV et dans « Coordonnées » de LinkedIn. Réécrivez ensuite votre titre LinkedIn avec 3 mots-clés de votre métier.
💻
Phase 1 sur 3

VS Code : construire le site

Tout se passe sur votre ordinateur

Étapes 1 à 6

1Comprendre le projet

Savoir ce que l'on va construire.

Un portfolio est un site personnel qui montre qui vous êtes, ce que vous savez faire et la preuve (vos projets). Sections visées : navbar, présentation, à propos, compétences, projets, formation, contact, footer.

Créez cette arborescence :

Noms de fichiers en minuscules, sans espaces ni accents.
NavbarHero : photo + titre + boutonsÀ proposCompétences (badges)Projet 1Projet 2Projet 3Formation et expérienceContact (formulaire)Footer
Figure 1 : les sections d'un portfolio, de haut en bas.
🎯 À vous de jouerOuvrez le Bloc-notes (ou VS Code) et créez l'arborescence sur votre bureau. Vérifiez que le dossier s'appelle bien portfolio (sans accent, sans espace).

2Préparer l'environnement

Avoir tous les outils prêts.

  1. Installer Visual Studio Code puis l'extension Live Server.
  2. Installer Git (git-scm.com).
  3. Créer un compte GitHub (pseudo sobre et professionnel).
  4. Créer un compte Render (render.com, connexion avec GitHub).
  5. Ouvrir le dossier portfolio dans VS Code (Fichier, Ouvrir le dossier).
  6. Configurer Git une seule fois :

Raccourcis VS Code utiles

ActionRaccourci
EnregistrerCtrl + S
Ouvrir le terminalCtrl + ù (ou Ctrl + `)
Formater le codeShift + Alt + F
Commenter une ligneCtrl + /
Dupliquer une ligneShift + Alt + ↓
Écrire vite du HTML (Emmet)! puis Tab
🎯 À vous de jouerTapez git --version dans le terminal de VS Code. Si Git répond avec un numéro de version, vous êtes prêt.

3Première page HTML

Comprendre la structure d'une page, sans Bootstrap.

  1. Créez index.html et collez le code ci-dessous.
  2. Clic droit, Open with Live Server.
  3. Modifiez un texte, enregistrez, regardez la page se rafraîchir.
<html><head><body>metatitleheadersection
Figure 2 : head = invisible (infos), body = ce qui s'affiche.
🎯 À vous de jouerChangez le <h1> par votre vrai nom, puis ajoutez une nouvelle section Loisirs avec une liste de 3 éléments. Rechargez la page : elle se met à jour automatiquement.

4Introduire Bootstrap

Obtenir un rendu professionnel et responsive avec des classes.

Ajoutez le CSS dans le <head> et le JS avant </body> (le JS sert au menu burger) :

Test : deux colonnes, empilées sur mobile.

BesoinClasses
Conteneurcontainer
Grillerow, col-12 col-md-6 col-lg-4
Espacementsmt-3, py-5, p-4
Couleursbg-dark, text-white, text-primary
Bouton, badge, cartebtn btn-primary, badge, card
col doit être dans row, lui-même dans container. Sans le script bundle, le burger ne s'ouvre pas.
12 colonnes par lignecol-md-6col-md-6col-md-4col-md-4col-md-4col-md-3col-md-9sm 576 px · md 768 px · lg 992 px · xl 1200 pxEn dessous du point de rupture : chaque colonne prend 100 % de la largeur
Figure 3 : la grille Bootstrap et ses points de rupture.
🎯 À vous de jouerPassez la grille de test à col-md-4 (trois colonnes), puis à col-lg-3. Réduisez la fenêtre du navigateur : à quelle largeur bascule-t-elle ?

5Construire le portfolio

Remplacer index.html par la version complète.

  1. Sélectionnez tout le contenu de index.html et remplacez-le par le code ci-dessous.
  2. Ajoutez img/photo.jpg et img/projet1.jpg.
  3. Enregistrez et vérifiez chaque section dans le navigateur.
🎯 À vous de jouerDupliquez trois fois le bloc col-12 col-md-6 col-lg-4 pour obtenir 3 projets. Renommez-les (Projet 2, Projet 3) et changez les badges.

6Personnaliser

Rendre le portfolio unique avec un petit fichier CSS.

  1. Créez css/style.css avec le code ci-dessous.
  2. Changez les couleurs via les variables, remplacez les textes et la photo, ajoutez vos projets.
  3. Testez sur mobile (F12, icône appareil).
🎯 À vous de jouerChangez --couleur-principale en violet (#6a3fb5), rechargez, observez. Puis testez #d6335b (rose) pour voir l'effet du dégradé.
✅
Checkpoint 1 Le site s'affiche en local avec Live Server.
Phase 2 ›
🐙
Phase 2 sur 3

Git + GitHub : sauvegarder en ligne

Historique local, puis dépôt public

Étapes 7 à 8

7Git : versionner

Enregistrer l'historique du projet.

Dans le terminal de VS Code (Ctrl+ù), à la racine du projet :

Faites un commit par étape (ex. « Ajout de la section projets »). Visez 8 commits ou plus.

Le trajet d'une modification

Dossiervos fichiersStagingpréparationDépôt localcommitsGitHuben ligneaddcommitpushpull / clone
Figure 4 : add prépare, commit enregistre, push envoie, pull récupère.

Travailler avec des branches

Une branche permet d'essayer une nouveauté sans toucher à la version stable (main).

mainfeature-contactmerge
Figure 5 : une branche part de main, reçoit des commits, puis est fusionnée (merge).

Annuler une erreur

SituationCommande
Voir ce qui a changégit diff
Annuler les modifs d'un fichiergit restore index.html
Retirer un fichier du staginggit restore --staged index.html
Corriger le dernier messagegit commit --amend -m "Nouveau message"
Récupérer les changements distantsgit pull
Bon commit : un commit = une idée, message court à l'infinitif (« Ajouter la section contact »).

Conventional Commits (bonus)

PréfixeUsage
feat:nouvelle fonctionnalité
fix:correction de bug
style:CSS, mise en forme
docs:README, documentation
chore:configuration, .gitignore
🎯 À vous de jouerModifiez index.html, puis git add index.html. Changez d'avis : git restore --staged index.html, puis git restore index.html. Vérifiez que tout est revenu.

8GitHub : envoyer en ligne

Connecter le dossier local à GitHub.

  1. Sur github.com : New repository, nom portfolio, Public, sans README ni .gitignore, puis Create repository.
  2. Copiez l'URL du dépôt et exécutez :
  1. Actualisez la page GitHub : vos fichiers apparaissent.
  2. Créez README.md (titre, lien de démo, sections), puis :
Si l'authentification est refusée : utilisez un Personal Access Token ou connectez GitHub dans VS Code. Vérifiez l'URL avec git remote -v.

Un dépôt bien organisé

Récupérer un dépôt existant

🎯 À vous de jouerAprès le git push, ouvrez la page GitHub de votre dépôt et vérifiez que vous voyez bien tous vos fichiers : index.html, css/style.css, img/, README.md.
✅
Checkpoint 2 Vos fichiers apparaissent sur github.com.
Phase 3 ›
🚀
Phase 3 sur 3

Render : publier le site

Chaque git push met le site à jour

Étapes 9 à 11

9Déployer sur Render

Mettre le portfolio en ligne automatiquement, à chaque push.

Render est une plateforme d'hébergement moderne qui se connecte à votre dépôt GitHub. Chaque git push sur main déclenche un nouveau déploiement, visible en direct dans l'onglet Events. Le site est en ligne en une trentaine de secondes.

Static Site, pas Web Service. Un portfolio HTML/CSS/Bootstrap ne nécessite aucun serveur : c'est un site statique. Choisissez le type Static Site. Un Web Service s'endort après 15 minutes d'inactivité et met environ 50 s à se réveiller — mauvais plan devant un recruteur.

Créer le service sur Render

  1. Allez sur render.com puis cliquez sur Sign in with GitHub.
  2. Autorisez Render à lire vos dépôts (vous pouvez restreindre l'accès au seul dépôt portfolio).
  3. Sur le Dashboard : New + → Static Site.
  4. Sélectionnez le dépôt portfolio, puis Connect.
  5. Remplissez le formulaire exactement comme ci-dessous :
  1. Cliquez sur Create Static Site.
  2. Attendez une minute. L'URL publique apparaît en haut du dashboard.
GitHubgit push mainRenderbuild + déploie🌍 En ligne.onrender.comwebhook~30 s
Figure 6 : GitHub déclenche Render, Render construit, le site est en ligne en ~30 secondes.
https://portfolio-prenom-nom.onrender.com
nom du service Render (choisi à l'étape 5)

Le cycle « push = redéploiement »

C'est le vrai intérêt de Render : plus rien à cliquer, plus rien à configurer. Modifiez un fichier, poussez, rechargez.

Pendant la séance, ouvrez l'onglet Events de Render dans un onglet voisin du terminal. Vos étudiants voient le déploiement se dérouler en direct : c'est bien plus parlant qu'un long discours.

Mettre à jour le site

Attendez 30 secondes, puis rechargez la page Render avec Ctrl + F5 (ou Cmd + Shift + R) pour contourner le cache du navigateur.

Bonus : le fichier render.yaml (Blueprint)

Pour aller plus loin — configurer Render depuis un fichier versionné

À la racine du dépôt, créez un fichier render.yaml. Au prochain branchement, Render lira ce fichier et configurera tout automatiquement. C'est de l'Infrastructure-as-Code : la configuration du déploiement est versionnée avec le code.

Preview Deployments — workflow professionnel

Quand vous poussez sur une branche autre que main et que vous ouvrez une Pull Request, Render crée une URL de préversion. On teste avant de fusionner.

GitHub Pages ou Render ?

CritèreGitHub PagesRender Static
Mise en placeSettings → PagesDashboard + Git
Délai de mise à jour1 à 3 minutes~30 secondes
Preview par Pull RequestNonOui
Logs de déploiementLimitésDétaillés (Events)
URL par défautpseudo.github.io/reponom.onrender.com
Domaine personnaliséOuiOui (gratuit)
HTTPS automatiqueOuiOui
Les deux sont gratuits. Vous pouvez garder les deux en parallèle : GitHub Pages comme sauvegarde, Render comme vitrine principale.

Si ça ne marche pas

Render affiche « Build failed »

Vérifiez trois choses : Build Command vide, Publish Directory = ., et que index.html est bien à la racine du dépôt.

La page déployée est vide ou blanche

Le index.html est probablement dans un sous-dossier. Corrigez Publish Directory (ex. public ou src), puis Manual Deploy → Clear build cache & deploy.

Mon style.css ne charge pas en ligne (mais oui en local)

Les serveurs Linux sont sensibles à la casse : Style.css n'est pas égal à style.css. Vérifiez aussi les espaces et accents dans les noms de fichiers.

J'ai poussé mais rien ne change en ligne

Ouvrez l'onglet Events de Render : le déploiement est-il terminé ? Puis rechargez avec Ctrl + F5 pour vider le cache du navigateur.

Render redemande de se connecter à GitHub

Rendez-vous dans Account Settings → GitHub → Configure account. Vérifiez que le dépôt portfolio est bien dans la liste autorisée.

🎯 À vous de jouerFaites un commit avec une faute de frappe volontaire dans un titre, poussez, observez Render redéployer dans l'onglet Events, puis corrigez la faute et poussez à nouveau. C'est exactement le cycle de travail quotidien d'un développeur.

10Publier avec GitHub Pages (alternative)

Obtenir une seconde URL publique, hébergée par GitHub.

GitHub Pages est une alternative gratuite à Render. Utile comme sauvegarde, ou si vous préférez une URL en github.io. Cette étape est facultative si Render fonctionne déjà.

  1. Dans le dépôt : Settings.
  2. Menu de gauche : Pages.
  3. Source : Deploy from a branch.
  4. Branch : main, dossier / (root), puis Save.
  5. Attendez 1 à 3 minutes et actualisez : l'URL apparaît.
Erreur 404 ? Vérifiez que le dépôt est public et que index.html est bien à la racine.
git pushsur mainGitHub Pagesconstruit le site🌍 En ligneURL publique
Figure 7 : chaque push met le site à jour en 1 à 3 minutes.
https://pseudo.github.io/portfolio
pseudo GitHub · nom du dépôt

Mettre à jour le site

Attendez 1 à 2 minutes puis rechargez avec Ctrl + F5.

🎯 À vous de jouerActivez GitHub Pages et notez l'URL obtenue. Vous avez maintenant deux URLs publiques : une sur Render, une sur GitHub Pages. Laquelle est la plus rapide à mettre à jour ?

11Projet final et vérification

Rendre un portfolio complet.

À rendre : l'URL du dépôt et l'URL Render publique.

Barème indicatif sur 20

CritèrePoints
Structure HTML3
Utilisation de Bootstrap3
Responsive design2
Contenu2
Design2
Section projets2
Qualité du code1
Utilisation de Git (commits, messages)2
Repository GitHub public1
Déploiement Render (URL fonctionnelle)2
🎯 À vous de jouerRelisez votre checklist, ouvrez votre URL Render sur un téléphone, testez le menu burger et cliquez sur tous les liens. Tout doit fonctionner.
✅
Checkpoint 3 Votre URL .onrender.com s'ouvre sur un téléphone.
Bonus ›
🎁
Bonus

Aller plus loin

Modèles, CV lisible par une IA, glossaire

3 sections

🎨Choisir un modèle de portfolio

Prévisualisez un modèle, copiez son code ou téléchargez son fichier HTML pour le personnaliser.

Les modèles sont des pages HTML autonomes. Cliquez sur Ouvrir le code, puis affichez le code source du navigateur (Ctrl + U) pour le copier. Le téléchargement vous permet de commencer directement dans VS Code.

Portfolio Bento

Une mise en page en cartes colorées, moderne et originale.

Portfolio latéral

Une barre latérale de navigation et un contenu clair, adapté à un CV en ligne.

Portfolio professionnel

Un thème sombre avec une présentation soignée et des accents lumineux.

Portfolio rose

Un style doux et coloré, avec une palette rose et des formes arrondies.

Après téléchargement, ouvrez le fichier dans VS Code et remplacez les textes, liens et coordonnées d'exemple par vos propres informations.

🤖CV lu par une IA (ATS)

Avant le recruteur, un logiciel lit votre CV.

👀

CV classique

Pour un humain

  • Design, couleurs, photo
  • Mise en page libre
🤖

CV lu par IA

Pour un logiciel (ATS)

  • Texte simple, 1 colonne
  • Titres et mots-clés clairs

1. Humain contre IA : testez

👤
Sara Ben AliDéveloppeuse web

Expérience

2024-2025 · Stage, Agence Web
Projet portfolio en Laravel

Formation

Licence informatique, 2025
Texte extrait par l'IA Sara Ben Ali
Développeuse web
Compétences
Laravel · PHP · Git
[photo ignorée]
[barres de niveau ignorées]
[image « Certifié » ignorée]
Expérience
2024-2025 · Stage, Agence Web
Formation
Licence informatique, 2025

En mode 🤖, les éléments en pointillés rouges sont perdus.

2. Le jeu des mots-clés

📋 L'offre demande : Développeur Laravel junior

LaravelPHPMySQLGitAPI RESTBootstrap

📄 Mon CV contient : cliquez pour tester

0 % Cliquez sur vos compétences.

Exemple pédagogique : chaque logiciel calcule son score à sa façon. N'écrivez que ce que vous maîtrisez.

3. Titres que le logiciel reconnaît

✓ Expérience✗ Mon aventure pro
✓ Formation✗ Mon parcours
✓ Compétences✗ Mes super-pouvoirs

4. Format du fichier

✓ PDF texte✗ Scan ou image
✓ 1 colonne✗ Tableaux
✓ Arial, Calibri✗ Police fantaisie
✓ Infos dans la page✗ En-tête, pied de page
✓ Mots écrits✗ Icônes seules
✓ prenom-nom-cv.pdf✗ cv_final_v3(2).pdf

5. Mon CV est-il lisible ? Test en 10 secondes

Vous copiez le texte de votre PDF dans le Bloc-notes : si c'est lisible, le logiciel le lira aussi.

1Ctrl + Atout sélectionner
2Ctrl + Ccopier
3📝 Bloc-notescoller : texte lisible ✓
✓ Texte lisible, dans l'ordre✗ Texte vide ou mélangé
Gardez deux versions : un CV design pour l'envoi direct, un CV simple pour les plateformes de recrutement.
🎯 À vous de jouerFaites le test sur votre CV. Si le texte est illisible ou dans le désordre, simplifiez la mise en page et recommencez.

📚Glossaire et erreurs fréquentes

TermeDéfinition
RepositoryDossier de projet suivi par Git
CommitPoint de sauvegarde avec un message
BranchLigne de travail parallèle
MergeFusion d'une branche dans une autre
Remote / originCopie du dépôt sur GitHub
Push / Pull / CloneEnvoyer / récupérer / copier un dépôt
CDNServeur qui héberge Bootstrap pour vous
ResponsivePage qui s'adapte à la taille de l'écran
BreakpointLargeur à partir de laquelle la mise en page change
Static SiteSite sans serveur : HTML/CSS/JS servis tels quels (Render)
WebhookNotification automatique GitHub → Render au push
Preview DeploymentURL temporaire générée pour une Pull Request
Mon image ne s'affiche pas

Vérifiez le chemin (img/photo.jpg), les majuscules/minuscules et l'extension réelle du fichier.

Le menu burger ne s'ouvre pas

Le script bootstrap.bundle.min.js est absent ou placé avant le reste de la page.

Git refuse le push

Vérifiez l'URL avec git remote -v et votre authentification (token ou connexion GitHub dans VS Code).

Render affiche « Build failed »

Vérifiez Build Command vide, Publish Directory = ., et index.html à la racine.

GitHub Pages affiche une erreur 404

Dépôt public ? Branche main ? index.html à la racine ? Attendez quelques minutes.

Mon style Bootstrap ne s'applique pas

Le lien CDN est mal copié, ou votre style.css est chargé avant Bootstrap.