Files
stripstream/devbook.md

251 lines
6.6 KiB
Markdown

# Plan de développement - Paniels (Komga Reader)
## 🎯 Objectif
Créer une application web moderne avec Next.js permettant de lire des fichiers CBZ, CBR, EPUB et PDF via un serveur Komga.
## 📋 Fonctionnalités principales
- [x] Interface de connexion
- [x] Page de paramétrage pour la configuration Komga
- [x] Visualisation et navigation dans la bibliothèque
- [x] Liste des bibliothèques
- [x] Affichage des séries par bibliothèque
- [x] Couvertures et informations des séries
- [ ] Filtres et recherche
- [x] Pagination
- [x] Lecteur de fichiers (CBZ, CBR)
- [x] Navigation entre les pages
- [x] Mode plein écran
- [x] Raccourcis clavier
- [ ] Mode double page
- [ ] Zoom et pan
- [ ] Préchargement des pages
## 🛠 Configuration initiale
- [x] Mise en place du projet Next.js
- [x] Configuration TypeScript
- [x] Configuration ESLint et Prettier
- [x] Configuration Tailwind CSS
- [x] Configuration des alias de chemins
- [x] Mise en place de l'authentification
- [x] Configuration du stockage sécurisé des credentials
- [x] Service de stockage avec localStorage/sessionStorage
- [x] Encodage basique des données sensibles
- [x] Gestion des cookies pour le middleware
- [x] Middleware d'authentification (protection des routes)
- [x] Protection des routes publiques/privées
- [x] Redirection vers la page de login
- [x] Gestion des routes d'API
- [x] Configuration des variables d'environnement
- [x] Création du fichier .env.local.example
- [x] URL de l'application
- [x] URL par défaut du serveur Komga
- [x] Version de l'application
- [x] Types pour les variables d'environnement
- [x] Déclaration des types ProcessEnv
- [x] Variables publiques (NEXT*PUBLIC*\*)
## 📚 Structure de l'application
- [x] Mise en place de l'architecture des dossiers
- [x] Components
- [x] Layouts
- [x] Pages (routes)
- [x] Services (API)
- [x] Types
- [x] Hooks personnalisés
- [x] Utils
- [x] Création des types TypeScript
- [x] Types pour l'API Komga
- [x] Types des utilisateurs et rôles
- [x] Types des bibliothèques
- [x] Types des séries et livres
- [x] Types des métadonnées
- [x] Types pour les états d'authentification
- [x] Configuration d'authentification
- [x] État d'authentification
- [x] Gestion des erreurs
- [x] Types pour les préférences utilisateur
## 🔒 Authentification et Configuration
- [x] Page de connexion
- [x] Formulaire de connexion (email/password)
- [x] Validation des champs
- [x] Gestion des erreurs de connexion
- [x] Stockage sécurisé du token
- [x] Redirection après connexion
- [x] Page de paramètres
- [x] Formulaire de configuration Komga
- [x] Validation de l'URL du serveur
- [x] Test de connexion en direct
- [x] Vérification des credentials via l'API Komga
- [x] Gestion des erreurs détaillée
- [x] Messages d'erreur contextuels
- [x] Sauvegarde des préférences
- [x] Stockage sécurisé des credentials Komga
- [x] Persistance des paramètres
## 📱 Interface utilisateur
- [x] Layout principal
- [x] Header avec navigation
- [x] Sidebar rétractable
- [x] Thème clair/sombre
- [x] Responsive design
- [x] Page d'accueil
- [x] Présentation des fonctionnalités principales
- [x] Liste des collections récentes
- [ ] Barre de recherche
- [ ] Filtres avancés
- [ ] Tri personnalisable
- [x] Page de collection
- [x] Grille de séries avec lazy loading
- [x] Affichage des couvertures
- [x] Métadonnées des séries
- [x] État des séries (En cours, Terminé, etc.)
- [ ] Vue liste/grille
- [ ] Filtres et tri
- [x] Page de détails de la série
- [x] Couverture et informations
- [x] Liste des tomes
- [x] Progression de lecture
- [x] Pagination des tomes
- [x] Filtre "À lire" (non lus et en cours)
- [x] Bouton de lecture contextuel
- [x] Page de détails du tome
- [x] Couverture et informations
- [x] Métadonnées (auteurs, date, etc.)
- [x] Bouton de lecture
- [x] Lecteur plein écran
## 🔄 Intégration Komga
- [x] Service d'API
- [x] Client HTTP avec fetch natif
- [x] Gestion des tokens Basic Auth
- [x] Cache des réponses
- [x] Cache en mémoire côté serveur
- [x] TTL configurable (5 minutes par défaut)
- [x] Cache par route et paramètres
- [x] Endpoints
- [x] Authentication
- [x] Bibliothèques
- [x] Séries
- [x] Livres
- [x] Pages
- [x] Gestion des erreurs
- [x] Retry automatique
- [x] Feedback utilisateur
- [x] Messages d'erreur détaillés
## 🎨 UI/UX
- [x] Design responsive
- [x] Mobile-first
- [x] Breakpoints cohérents
- [x] Touch-friendly
- [x] Animations et transitions
- [x] Page transitions
- [x] Loading states
- [x] Micro-interactions
- [x] Messages de feedback
- [x] Toasts pour les actions
- [x] Messages d'erreur contextuels
- [x] Indicateurs de progression
- [x] États de chargement
- [x] Skeletons
- [x] Suspense boundaries
- [x] Loading spinners
- [x] Gestion des erreurs UI
- [x] Error boundaries
- [x] Fallbacks élégants
- [x] Recovery options
## 🧪 Tests
- [ ] Tests unitaires
- [ ] Services
- [ ] Hooks
- [ ] Utils
- [ ] Tests d'intégration
- [ ] Flows utilisateur
- [ ] API integration
- [ ] Tests E2E
- [ ] User journeys
- [ ] Cross-browser
## 📦 Déploiement
- [ ] Configuration du build
- [ ] Optimisations de build
- [ ] Analyse de bundle
- [ ] Scripts de déploiement
- [ ] CI/CD
- [ ] Environnements
- [ ] Documentation d'installation
- [ ] Requirements
- [ ] Step-by-step guide
## 📝 Documentation
- [ ] README
- [ ] Installation
- [ ] Configuration
- [ ] Development
- [ ] Guide d'utilisation
- [ ] Features
- [ ] Shortcuts
- [ ] Tips & tricks
- [ ] Documentation API
- [ ] Endpoints
- [ ] Types
- [ ] Examples
## 🔍 Optimisations
- [x] Performance
- [x] Optimisation des images
- [x] Format WebP
- [x] Responsive images
- [x] Lazy loading
- [x] Components
- [x] Images
- [x] Routes
- [x] Mise en cache
- [x] API responses
- [x] Static assets
- [x] Images
- [ ] SEO
- [ ] Meta tags
- [ ] Sitemap
- [ ] robots.txt
- [x] Accessibilité
- [x] ARIA labels
- [x] Keyboard navigation
- [x] Screen readers
- [x] Color contrast
## 🔄 Futures évolutions possibles
- [ ] Support de nouveaux formats
- [ ] EPUB
- [ ] PDF
- [ ] Synchronisation des favoris
- [ ] Sync avec Komga
- [ ] Listes personnalisées
- [ ] Mode hors ligne
- [ ] Service worker
- [ ] Sync en background
- [ ] PWA
- [ ] Installation
- [ ] Notifications
- [ ] Background sync
- [ ] Support multi-langues
- [ ] i18n
- [ ] RTL support