Skip to content

Aprilox/book-collection

Repository files navigation

📚 Book Collection – GĂ©rez votre bibliothĂšque comme un pro

Petite app perso pour centraliser toute ma collection de livres / BD avec une interface moderne, des listes de lecture et une wishlist pratique.

đŸ–Œ Aperçu

image


✹ FonctionnalitĂ©s principales

  • Authentification

    • Connexion via un mot de passe administrateur (admin123 au premier lancement, modifiable ensuite).
    • Protection contre les tentatives de connexion abusives (verrouillage temporaire, dĂ©lais progressifs entre essais).
  • Gestion de collection de livres

    • Ajout, Ă©dition, suppression de livres (titre, auteur, sĂ©rie, Ă©tat, note, notes, etc.).
    • TĂ©lĂ©chargement automatique des couvertures distantes vers public/book-covers.
    • VĂ©rifications et messages d’erreur cĂŽtĂ© serveur (titre/auteur obligatoires, note 1–5, etc.).
  • Liste de souhaits (wishlist)

    • Ajout de livres que vous ne possĂ©dez pas encore.
    • DĂ©placement d’un livre de la wishlist vers la collection.
  • Dossiers de lecture / ordres de lecture

    • CrĂ©ation de dossiers de lecture (par sĂ©rie, auteur, thĂ©matique
).
    • Ajout de livres dans un dossier avec un ordre de lecture et des notes.
    • RĂ©organisation de l’ordre des livres (drag & drop cĂŽtĂ© UI).
  • Recherche & intĂ©grations externes

    • APIRoutes pour interroger ComicVine, MangaDex, Bedetheque, etc. (voir app/api/*).
    • PossibilitĂ© d’enregistrer des clĂ©s API (par ex. ComicVine) via le menu ParamĂštres.
  • Interface moderne

    • Composants UI basĂ©s sur Radix UI + Tailwind (voir components/ui/*).
    • ThĂšme sombre par dĂ©faut, design responsive.
    • Toasters, dialogues, formulaires ergonomiques.

🛠 Stack technique

  • Framework : Next.js 15 (app router, composants serveur & client).
  • Langage : TypeScript.
  • UI : React 18, Radix UI, Tailwind CSS.
  • Stockage : fichier JSON local data/library.json (gĂ©rĂ© par lib/db.ts).
  • Autres librairies : react-hook-form, zod, date-fns, embla-carousel-react, recharts, lucide-react, etc.

✅ PrĂ©requis

  • Node.js 18+ recommandĂ©.
  • pnpm (conseillĂ©) ou npm/yarn pour gĂ©rer les dĂ©pendances.

🚀 Installation

  1. Cloner le dépÎt :
git clone https://github.com/Aprilox/book-collection.git
cd book-collection
  1. Installer les dépendances (avec pnpm) :
pnpm install

Vous pouvez aussi utiliser npm install ou yarn, selon vos habitudes.

đŸ§© Lancement en dĂ©veloppement

pnpm dev

L’application sera disponible sur http://localhost:7003.

📩 Build & production locale

  1. Construire le projet :
pnpm build
  1. Lancer le serveur de production :
pnpm start

Par défaut : http://127.0.0.1:8003.

đŸ’Ÿ DonnĂ©es & persistance

⚠ Ce projet est une dĂ©mo pensĂ©e pour un usage local / perso, pas pour un dĂ©ploiement en production tel quel.

  • Les donnĂ©es utilisateur sont actuellement stockĂ©es en local dans le fichier data/library.json.
  • Au premier lancement, un utilisateur admin est créé avec :
    • Mot de passe : admin123
    • Collections vides (livres, wishlist, dossiers de lecture).
  • Les images de couvertures tĂ©lĂ©chargĂ©es sont enregistrĂ©es dans public/book-covers.
  • Pour un usage plus propre et robuste (prod, multi‑instances, sauvegardes
), il est recommandĂ© de remplacer ce stockage fichier par une base de donnĂ©es externe (PostgreSQL, MySQL, MongoDB, etc.) et d’adapter lib/db.ts en consĂ©quence.

🔐 Authentification & sĂ©curitĂ©

  • Authentification gĂ©rĂ©e cĂŽtĂ© serveur via lib/auth.ts et lib/db.ts.
  • MĂ©canismes inclus :
    • Suivi des tentatives de connexion.
    • Verrouillage temporaire du compte aprĂšs plusieurs Ă©checs (MAX_ATTEMPTS, durĂ©e de verrouillage, etc.).
    • DĂ©lais progressifs entre les tentatives pour limiter le brute force.
  • Le mot de passe peut ĂȘtre modifiĂ© via le menu ParamĂštres (voir bouton en haut Ă  droite de la page d’accueil une fois connectĂ©).

🔑 Configuration des clĂ©s API

  • Les clĂ©s API (par ex. ComicVine) sont stockĂ©es dans data/library.json dans la section apiKeys de l’utilisateur admin.
  • Une valeur par dĂ©faut peut ĂȘtre fournie via la variable d’environnement COMIC_VINE_API_KEY.
  • Vous pouvez les modifier via le SettingsMenu dans l’interface.

📁 Structure du projet (rĂ©sumĂ©)

  • app/ : pages Next.js (login, page d’accueil, API routes).
  • components/ : composants UI mĂ©tiers (cartes de livres, dialogues, panels, etc.).
  • components/ui/ : bibliothĂšque de composants gĂ©nĂ©riques (boutons, inputs, modales
).
  • lib/ : logique cĂŽtĂ© serveur et utilitaires (db.ts, auth.ts, image-utils.ts, etc.).
  • data/ : fichier library.json contenant les donnĂ©es utilisateur.
  • types/ : types TypeScript pour les livres et les dossiers de lecture.

📜 Scripts disponibles

  • pnpm dev : lance le serveur de dĂ©veloppement sur le port 7003.
  • pnpm build : build de production.
  • pnpm start : lance le serveur de production (port 8003).
  • pnpm lint : exĂ©cute next lint.

⚠ Remarques & limitations

  • Projet conçu comme programme dĂ©mo / sandbox perso.
  • Le systĂšme est pensĂ© pour un seul utilisateur admin (pas de gestion multi‑comptes).
  • Les donnĂ©es sont stockĂ©es en clair dans un simple fichier JSON local, ce qui n’est pas adaptĂ© pour un dĂ©ploiement pro (sĂ©curitĂ©, scalabilitĂ©, backups, concurrence d’accĂšs
).
  • Pour un vrai usage production, il faut :
    • brancher la persistance sur une DB externe (et Ă©ventuellement un ORM),
    • ajouter une vraie gestion des utilisateurs / droits,
    • renforcer la sĂ©curitĂ© (hash des mots de passe, secrets, HTTPS, etc.),
    • prĂ©voir un environnement d’hĂ©bergement (VPS, PaaS, Docker, etc.).
  • Si vous supprimez data/library.json, il sera recréé Ă  partir des valeurs par dĂ©faut au prochain lancement (reset complet des donnĂ©es).

📄 Licence

Ce projet est fourni pour un usage privé et personnel uniquement.
Vous ĂȘtes libre de l’utiliser, le cloner et le modifier pour vos besoins personnels, mais :

  • Toute utilisation commerciale / revente / hĂ©bergement public de type “service” est interdite sans accord explicite prĂ©alable.
  • Merci de ne pas republier le projet tel quel sous un autre nom ou compte dans un but de diffusion publique ou commerciale.

Les issues et suggestions d’amĂ©lioration sont les bienvenues sur le dĂ©pĂŽt GitHub.
Forks et modifications à but strictement personnel sont autorisés.

About

📚 Book Collection – App Next.js 15 pour gĂ©rer ta bibliothĂšque perso de livres/BD avec fiches dĂ©taillĂ©es, wishlist, dossiers/ordres de lecture, stats Ă©lĂ©gantes et recherches via APIs (ComicVine, MangaDex
). TypeScript ‱ Tailwind ‱ UI moderne ‱ Responsive ‱ Mode sombre ✹

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages