doc: readme translate and completion/refresh

This commit is contained in:
Julien Froidefond
2025-03-02 06:40:57 +01:00
parent 2289753b84
commit a28d36aa53
2 changed files with 88 additions and 199 deletions

139
README.md
View File

@@ -1,6 +1,6 @@
# Stripstream # Stripstream
Une application web moderne pour lire des bandes dessinées numériques, construite avec Next.js 14 et l'API Komga. A modern web application for reading digital comics, built with Next.js 14 and the Komga API.
## 🚀 Technologies ## 🚀 Technologies
@@ -11,96 +11,133 @@ Une application web moderne pour lire des bandes dessinées numériques, constru
- [Shadcn/ui](https://ui.shadcn.com/) - [Shadcn/ui](https://ui.shadcn.com/)
- [Docker](https://www.docker.com/) - [Docker](https://www.docker.com/)
## 🛠 Prérequis ## 🛠 Prerequisites
- Node.js 20.x ou supérieur - Node.js 20.x or higher
- npm 10.x ou supérieur - Yarn 1.22.x or higher
- Docker et Docker Compose (optionnel) - Docker and Docker Compose (optional)
## 📦 Installation ## 📦 Installation
### Méthode classique ### Standard Method
1. Cloner le repository 1. Clone the repository
```bash ```bash
git clone [url-du-repo] git clone [repo-url]
cd stripstream cd stripstream
``` ```
2. Installer les dépendances 2. Install dependencies
```bash ```bash
npm install yarn install
``` ```
3. Créer un fichier `.env.local` à la racine du projet 3. Copy the example environment file and adjust it to your needs
4. Lancer le serveur de développement
```bash ```bash
npm run dev cp .env.example .env.local
``` ```
### Avec Docker 4. Start the development server
1. Cloner le repository et se placer dans le dossier
```bash ```bash
git clone [url-du-repo] yarn dev
```
### With Docker
1. Clone the repository and navigate to the folder
```bash
git clone [repo-url]
cd stripstream cd stripstream
``` ```
2. Lancer avec Docker Compose 2. Launch with Docker Compose
```bash ```bash
docker-compose up --build docker-compose up --build
``` ```
L'application sera accessible sur `http://localhost:3000` The application will be accessible at `http://localhost:3000`
## 🔧 Scripts disponibles ## 🔧 Available Scripts
- `npm run dev` - Lance le serveur de développement - `yarn dev` - Starts the development server
- `npm run build` - Crée une version de production - `yarn build` - Creates a production build
- `npm start` - Lance la version de production - `yarn start` - Runs the production version
- `npm run lint` - Vérifie le code avec ESLint - `yarn lint` - Checks code with ESLint
- `yarn format` - Formats code with Prettier
## 🌐 API Komga ## 🌐 Komga API
L'application utilise l'API Komga pour la gestion des bandes dessinées. La documentation de l'API est disponible ici : The application uses the Komga API for comic book management. The API documentation is available here:
[Documentation Komga API](https://cloud.julienfroidefond.com/swagger-ui/index.html#/) [Komga API Documentation](https://cloud.julienfroidefond.com/swagger-ui/index.html#/)
## 🏗 Structure du projet ## 🏗 Project Structure
``` ```
src/ src/
├── app/ # Pages et routes Next.js ├── app/ # Next.js pages and routes
├── components/ # Composants React réutilisables ├── components/ # Reusable React components
│ ├── home/ # Composants spécifiques à la page d'accueil ├── constants/ # Application constants
│ ├── layout/ # Composants de mise en page ├── contexts/ # React contexts
│ ├── reader/ # Composants du lecteur de BD ├── hooks/ # Custom React hooks
│ └── ui/ # Composants UI réutilisables ├── i18n/ # Internationalization configuration
├── lib/ # Utilitaires et services ├── lib/ # Utilities and services
│ └── services/ # Services pour l'API et autres fonctionnalités ├── messages/ # Translation messages
── styles/ # Styles globaux ── middleware.ts # Next.js middleware
├── styles/ # Global styles
├── types/ # TypeScript type definitions
└── utils/ # Helper functions and utilities
docs/ # Project documentation
scripts/ # Utility scripts
public/ # Static assets
``` ```
## 🤝 Contribution ## 🤝 Contributing
1. Créer une branche pour votre fonctionnalité 1. Create a branch for your feature
2. Commiter vos changements 2. Commit your changes
3. Pousser vers la branche 3. Push to the branch
4. Ouvrir une Pull Request 4. Open a Pull Request
## 📝 Guidelines de développement ## 📝 Development Guidelines
- Suivre les principes DRY (Don't Repeat Yourself) - Follow DRY (Don't Repeat Yourself) principles
- Utiliser TypeScript pour tout nouveau code - Use TypeScript for all new code
- Utiliser les classes Tailwind pour le styling - Use Tailwind classes for styling
- Implémenter les fonctionnalités d'accessibilité - Implement accessibility features
- Mettre à jour le devbook.md pour toute modification significative - Update devbook.md for any significant changes
- Follow the project's code style (enforced by ESLint and Prettier)
## 📄 Licence ## 📄 License
Ce projet est sous licence [insérer type de licence] This project is licensed under the MIT License.
```text
MIT License
Copyright (c) 2025 Julien Froidefond
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

View File

@@ -1,148 +0,0 @@
# Propositions de Refactorisation
## Renforcement de l'Authentification
### 1. Sécurité des Tokens
#### État Actuel
- Utilisation de cookies simples pour stocker les informations utilisateur
- Validation basique des données utilisateur
- Pas de gestion de session sophistiquée
#### Améliorations Proposées
1. **Tokens JWT**
- Implémenter des JWT (JSON Web Tokens) pour l'authentification
- Ajouter des claims essentiels (exp, iat, sub, jti)
- Utiliser une rotation des clés de signature
- Implémenter un refresh token avec une durée de vie plus longue
2. **Sécurité des Cookies**
- Ajouter les flags de sécurité : `HttpOnly`, `Secure`, `SameSite=Strict`
- Implémenter une stratégie de rotation des cookies
- Chiffrer les données sensibles dans les cookies
3. **Gestion des Sessions**
- Implémenter une table de sessions en base de données
- Ajouter une détection des connexions simultanées
- Permettre la révocation des sessions
- Ajouter un système de "Se souvenir de moi" sécurisé
### 2. Protection Contre les Attaques
1. **Rate Limiting**
- Implémenter un rate limiting par IP pour les routes d'authentification
- Ajouter un délai progressif après des tentatives échouées
- Mettre en place un système de bannissement temporaire
2. **Protection Contre les Attaques Courantes**
- Ajouter une protection CSRF avec des tokens
- Implémenter une protection contre le timing attacks
- Ajouter une validation stricte des entrées
- Protection contre les attaques par force brute
3. **Validation et Sanitization**
- Utiliser Zod pour la validation des données
- Implémenter une sanitization stricte des entrées
- Valider les en-têtes HTTP sensibles
### 3. Améliorations du Processus d'Authentification
1. **Multi-Factor Authentication (MFA)**
- Ajouter support pour l'authentification à deux facteurs
- Implémenter TOTP (Google Authenticator)
- Ajouter support pour les clés de sécurité (WebAuthn)
2. **Gestion des Mots de Passe**
- Renforcer les règles de complexité des mots de passe
- Implémenter un système de réinitialisation sécurisé
- Ajouter une vérification des mots de passe compromis (via API HaveIBeenPwned)
3. **Audit et Logging**
- Enregistrer toutes les tentatives de connexion
- Logger les actions sensibles
- Implémenter un système d'alerte pour les activités suspectes
### 4. Middleware et Routes
1. **Amélioration du Middleware**
```typescript
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { verifyToken } from "@/lib/jwt";
import { rateLimit } from "@/lib/rateLimit";
export async function middleware(request: NextRequest) {
// Rate limiting
const rateLimitResult = await rateLimit(request);
if (!rateLimitResult.success) {
return NextResponse.json({ error: "Trop de requêtes" }, { status: 429 });
}
// Vérification du token
const token = request.cookies.get("auth-token");
if (!token) {
return handleUnauthorized(request);
}
try {
const verified = await verifyToken(token.value);
if (!verified.valid) {
return handleUnauthorized(request);
}
// Ajouter les informations utilisateur à la requête
const requestHeaders = new Headers(request.headers);
requestHeaders.set("x-user-id", verified.userId);
requestHeaders.set("x-user-roles", verified.roles.join(","));
// Vérifier les permissions
if (!hasRequiredPermissions(verified, request.nextUrl.pathname)) {
return NextResponse.json({ error: "Accès non autorisé" }, { status: 403 });
}
return NextResponse.next({
headers: requestHeaders,
});
} catch (error) {
return handleUnauthorized(request);
}
}
function handleUnauthorized(request: NextRequest) {
if (request.nextUrl.pathname.startsWith("/api/")) {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const loginUrl = new URL("/login", request.url);
loginUrl.searchParams.set("from", request.nextUrl.pathname);
return NextResponse.redirect(loginUrl);
}
```
### 5. Prochaines Étapes
1. **Phase 1 - Sécurité Immédiate**
- Implémenter les JWT et la sécurité des cookies
- Ajouter le rate limiting
- Renforcer le middleware
2. **Phase 2 - Fonctionnalités Avancées**
- Implémenter le MFA
- Ajouter la gestion des sessions
- Mettre en place l'audit logging
3. **Phase 3 - Monitoring et Maintenance**
- Implémenter un système de monitoring
- Mettre en place des alertes de sécurité
- Planifier des audits réguliers