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.