October 30, 2024
·
6 min de lecture
·Par Mostafa Aljazar

Construire un CMS de Portfolio avec Next.js et JSON Local

Qui dit qu'il faut une base de données pour un portfolio personnel ? Voici comment j'ai construit un CMS complet avec des fichiers JSON, des Server Actions et le cache de Next.js.

La plupart des tutoriels de portfolio se tournent immédiatement vers une base de données. Mais pour un site personnel avec un seul administrateur, une base de données ajoute de la complexité d'infrastructure sans bénéfice réel. Les fichiers JSON sur le système de fichiers, avec les Server Actions de Next.js et revalidatePath, vous donnent la même DX sans aucune contrainte opérationnelle.

La couche de données

Deux fonctions utilitaires — readData<T>(filename) et writeData<T>(filename, data) — enveloppent fs.promises.readFile et writeFile. Chaque module de domaine (projects.ts, skills.ts, blogs.ts) les appelle avec des génériques typés. Cohérent, simple et facile à remplacer par une vraie base de données plus tard.

Invalidation du cache avec revalidatePath

Après chaque écriture, appelez revalidatePath('/') et le sous-chemin concerné. Next.js purge le payload RSC en cache, et le prochain chargement de page reflète la mise à jour instantanément. Pas de polling, pas de webhooks, pas de complexité.

Quand passer à une base de données

Si vous avez besoin de plusieurs éditeurs concurrents, d'un contrôle d'accès au niveau des lignes, d'une recherche plein texte ou d'une plateforme de déploiement qui ne supporte pas un filesystem inscriptible, il est temps d'adopter une base de données. D'ici là, les fichiers JSON conviennent parfaitement — et ils se versionnent trivialement avec git.

Mostafa Aljazar

Développeur Frontend passionné par la création d'expériences web performantes, accessibles et belles avec React.js et Next.js.

Construisons quelque chose d'incroyable ensemble

Se connecter

iconicon

© 2026 Mostafa Aljazar. Tous droits réservés.

Construit avec Next.js & Tailwind CSS