jules@halfnil:~$ cat ~/blog/sqlite-en-prod-pour-un-site-perso.md

SQLite en production ? Pour un site perso, mille fois oui.

Pas de serveur de base de données, pas de connexion réseau, pas de facture — pourquoi SQLite avec Prisma est le choix rationnel pour un site personnel.

16 juillet 2026 · 2 min ·

Quand on dit « base de données en production », tout le monde pense PostgreSQL managé, connection pooling, variables d'environnement avec des URLs à rallonge. Mon portfolio tourne sur un fichier : portfolio.db.

## Ce que SQLite m'épargne

  • Aucun serveur à administrer. Pas de process séparé, pas de port ouvert, pas de mot de passe de base à faire tourner.
  • Aucune latence réseau. La base est un fichier sur le même disque que l'app. Une requête, c'est une lecture locale.
  • Une sauvegarde = une copie de fichier. cp portfolio.db backup/ et c'est réglé.
  • Zéro facture. Pas d'add-on à 15 $/mois pour stocker trois projets et dix étapes de parcours.

## Les limites, honnêtement

SQLite écrit en série : un seul writer à la fois. Si j'avais des centaines d'écritures concurrentes par seconde, ce serait un problème. Mais soyons sérieux : ce site fait quelques écritures par semaine (quand j'édite le contenu) et les visiteurs ne font que lire — et depuis le passage à l'ISR, ils ne touchent même plus la base, ils lisent du HTML statique.

L'autre limite, c'est l'hébergement serverless : sur des lambdas éphémères, un fichier local n'a pas de sens. Mais mon site tourne sur un VPS avec pm2, un vrai disque, un vrai process qui vit longtemps. Le déploiement « fichier » y est naturel.

## Avec Prisma, rien ne change

Côté code, SQLite est invisible :

prisma
datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

Le schéma, les migrations (prisma db push), le client typé — tout est identique à ce que j'écrirais pour Postgres. Seule concession : SQLite n'a ni enums ni tableaux natifs, donc mes listes sont des colonnes JSON sérialisées. Un JSON.parse dans la couche de lecture et on n'en parle plus.

Et le jour où le projet dépasse SQLite ? Je change le provider, je migre les données, et le reste du code ne bouge pas. Ce jour n'est pas près d'arriver.

## Ce que je retiens

Dimensionner son infra sur son vrai trafic, pas sur celui qu'on fantasme. Un fichier suffit largement à un site personnel — et chaque pièce d'infra en moins, c'est une panne possible en moins.

## Pour aller plus loin