Site de Saint Eresia : light novels à lire en ligne et patchs français de visual novels.
Next.js 16 (App Router), Tailwind, shadcn/ui, SQLite/libSQL et Better Auth (Discord).
En local, tout tient dans data/ ; en production (Vercel), la base est sur Turso et les images sur Vercel Blob.
npm install
cp .env.example .env # puis remplir les valeurs
npm run db:migrate # crée les tables (data/saint-eresia.db)
npm run db:seed # importe le contenu de l’ancien site : patchs, novels, équipe, images
npm run dev
Dans l’application Discord, déclarez l’URL de redirection {BETTER_AUTH_URL}/api/auth/callback/discord.
/gestion) : réservée aux comptes Discord qui ont l’un des rôles DISCORD_TEAM_ROLES sur le serveur DISCORD_GUILD_ID. Les rôles sont lus avec le jeton de l’utilisateur (scope guilds.members.read) et gardés 5 minutes en mémoire. Chaque action serveur et chaque envoi d’images revérifient ces droits./equipe se gèrent dans /gestion (rôles et projets, liens, avatar recadré en carré).DISCORD_ADMIN_IDS ont toujours accès à la gestion, même sans rôle sur le serveur.data/uploads/, servies par /uploads/<fichier>. Dans l’éditeur de chapitre, une image glissée dans le texte est insérée à l’emplacement du curseur.En local, le dossier data/ contient toutes les données : à sauvegarder. En production, elles sont sur Turso et Vercel Blob (voir ci-dessous).
Vercel n’a pas de disque persistant : un fichier SQLite ou un dossier d’images y serait effacé à chaque déploiement. Le site utilise donc, dès que les variables correspondantes sont définies :
Étapes :
turso auth signup), puis
turso db create saint-eresia, turso db show saint-eresia --url et turso db tokens create saint-eresia.
Reportez l’URL (libsql://…) et le jeton dans .env : TURSO_DATABASE_URL, TURSO_AUTH_TOKEN.BLOB_READ_WRITE_TOKEN dans .env.npm run db:cloud crée les tables sur Turso, copie data/saint-eresia.db
(patchs, novels, chapitres, équipe) et envoie data/uploads/ sur Blob. Relançable sans doublon.
Sur une base vide, npm run db:migrate puis npm run db:seed font la même chose avec le contenu d’origine..env.example,
avec BETTER_AUTH_URL=https://<votre-site>.vercel.app (sans barre finale).https://<votre-site>.vercel.app/api/auth/callback/discord aux URL de redirection de l’application.npx vercel --prod.Notes :
TURSO_DATABASE_URL est défini dans votre .env local, npm run dev travaille directement sur la base de production.| Commande | Rôle |
|---|---|
npm run dev |
serveur de développement |
npm run build puis npm start |
production |
npm run db:migrate |
crée ou met à jour les tables de la base |
npm run db:seed |
importe le contenu d’origine (scripts/seed-data/), sans effet sur ce qui existe déjà |
npm run db:cloud |
copie data/ (base et images) vers Turso et Vercel Blob déclarés dans .env |
npm run lint |
vérification ESLint |