iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Vue · Intermédiaire

OpenFolio

Construire un portfolio open-source moderne avec Nuxt 3 — thèmes CSS, données JSON, SEO automatique, et déploiement Docker.

Nuxt 3Vue 3TypeScriptTailwind CSSDocker
GitHub
01Setup et configuration02Structure et routing Nuxt 303Données JSON et composables04Système de thèmes CSS05Pages et composants06SEO et performances07Déploiement Docker et Vercel
Chapitre 1·15 min

Setup et configuration

On part d'un dépôt vide et on arrive à un portfolio qui tourne en local avec vos propres données.

Cloner et installer

Terminal
git clone https://github.com/williamloree/OpenFolio.git
cd OpenFolio
npm install

Node 20+ est requis. Pas de variables d'environnement à configurer — tout est statique.

Démarrer en développement

Terminal
npm run dev

Nuxt démarre sur http://localhost:3000. Hot reload automatique : chaque modification d'un fichier .vue ou .json se reflète instantanément.

Structure du projet

OpenFolio/
├── assets/
│   └── themes/           ← default.css, cyberpunk.css, forest.css, ocean.css
├── components/
│   ├── Header.vue
│   └── Footer.vue
├── pages/
│   ├── index.vue         ← profil + hero
│   ├── projets.vue       ← grille de projets filtrables
│   └── contact.vue       ← formulaire de contact
├── public/
│   └── data/
│       ├── profile.json  ← nom, bio, liens sociaux
│       ├── projects.json ← liste des projets
│       ├── experiences.json
│       ├── skills.json
│       └── education.json
├── utils/                ← fonctions utilitaires partagées
├── app.vue               ← layout racine
└── nuxt.config.ts        ← config Nuxt + modules + thème actif

Le principe est simple : tout le contenu vit dans /public/data/. Changer un projet, une expérience, ou une compétence = éditer un fichier JSON. Aucun code Vue à toucher.

Personnaliser votre profil

Ouvrez public/data/profile.json et remplacez les valeurs :

public/data/profile.json
{
  "name": "Votre Nom",
  "username": "@votre-pseudo",
  "title": "Développeur Full-Stack",
  "bio": "Une phrase qui décrit ce que vous faites.",
  "avatar": "/images/avatar.jpg",
  "location": "Paris, France",
  "available": true,
  "social": [
    { "type": "github", "url": "https://github.com/votre-pseudo", "label": "GitHub" },
    { "type": "linkedin", "url": "https://linkedin.com/in/votre-pseudo", "label": "LinkedIn" }
  ]
}

Le champ available affiche un badge vert "Disponible" sur le profil — pratique quand on cherche du travail.

Choisir un thème

Dans nuxt.config.ts, une seule ligne contrôle le thème actif :

nuxt.config.ts
css: ['~/assets/themes/ocean.css'], // ou default, cyberpunk, forest

Les quatre thèmes disponibles :

  • default.css — sombre, bleu/violet
  • cyberpunk.css — noir + néon
  • forest.css — tons verts
  • ocean.css — bleus apaisants

On verra comment le système de thèmes fonctionne en détail au chapitre 4.

Suivant
Structure et routing Nuxt 3

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main