Compare commits

..

No commits in common. "main" and "v.1.3.2" have entirely different histories.

3 changed files with 155 additions and 37 deletions

186
README.md

@ -1,59 +1,179 @@
# Lectures d'Esenjin - Plateforme de Publication de Romans # Plateforme de Publication de Romans en Ligne
Une plateforme web élégante pour la publication et la lecture de romans, développée en PHP avec stockage JSON. Une plateforme web simple et élégante pour la publication et la lecture de romans en ligne, développée en PHP avec stockage JSON.
![Aperçu du site](https://concepts.esenjin.xyz/cyla/fichiers/67bf650a481c8_1740596490.gif) ## 🚀 Fonctionnalités
## Fonctionnalités principales
### Zone Administrative ### Zone Administrative
- Interface sécurisée pour la gestion des contenus - Interface sécurisée pour la gestion des contenus
- Création et édition de romans avec éditeur WYSIWYG (Quill.js) - Création et édition de romans avec éditeur WYSIWYG
- Gestion des chapitres avec réorganisation par glisser-déposer - Gestion flexible des chapitres avec réorganisation par glisser-déposer
- Mode brouillon pour les chapitres en cours de rédaction - Prévisualisation avant publication
- Système d'upload et de gestion d'images - Stockage JSON pour une maintenance simplifiée
- Gestion des accès utilisateurs (administrateurs, éditeurs) - Système d'upload d'images avec redimensionnement automatique
- Import/Export des romans au format ZIP - Gestion des métadonnées (date de création, mise à jour, etc.)
- Personnalisation des options du site (logo, bannière, informations) - Import/Export des romans
- Gestion du profil et des options du site
![image](https://concepts.esenjin.xyz/cyla/fichiers/67b1db9462f60_1739709332.png)
![image](https://concepts.esenjin.xyz/cyla/fichiers/67b1db949a6d2_1739709332.png)
![image](https://concepts.esenjin.xyz/cyla/fichiers/67b1db947d0d0_1739709332.png)
### Zone Publique ### Zone Publique
- Interface de lecture épurée aux tons bruns/ocre - Interface de lecture épurée et confortable
- Navigation intuitive entre les chapitres - Navigation intuitive entre les chapitres
- Design responsive optimisé pour tous les appareils - Design responsive optimisé pour la lecture
- Section "À propos" personnalisable avec statistiques automatiques - Thème personnalisé aux tons bruns/ocre
- Indicateurs pour nouveaux chapitres et contenus en cours de rédaction - Affichage adaptatif des images et du contenu
## Prérequis techniques ![image](https://concepts.esenjin.xyz/cyla/fichiers/67b1db949863b_1739709332.png)
![image](https://concepts.esenjin.xyz/cyla/fichiers/67b1db9569d54_1739709333.png)
## 📋 Prérequis
- PHP 8.0 ou supérieur - PHP 8.0 ou supérieur
- Extensions PHP : GD pour le traitement des images - Serveur web (Apache/Nginx) avec mod_rewrite activé
- Permissions d'écriture sur les dossiers `stories/` et `assets/images/` - Extensions PHP : GD ou Imagick pour le traitement des images
- Permissions d'écriture sur les dossiers `stories/`, `assets/images/` et `admin/`
## Installation rapide ## 🛠️ Installation
1. Clonez le dépôt 1. Clonez le dépôt :
2. Copiez et modifiez `config.json` avec vos paramètres ```bash
3. Définissez les permissions appropriées sur les dossiers git clone https://github.com/votre-username/nom-du-projet.git
4. Accédez à `/admin` pour commencer à gérer vos romans cd nom-du-projet
```
## Structure du projet 2. Configurez votre serveur web pour pointer vers le dossier racine du projet
3. Copiez et modifiez le fichier de configuration :
```bash
cp config.example.json config.json
```
4. Modifiez `config.json` avec vos paramètres :
```json
{
"site": {
"name": "Votre Site",
"url": "https://votre-domaine.com",
"description": "Description de votre site",
"logo": "assets/images/logo.png"
},
"users": [
{
"id": "admin",
"password": "votre_mot_de_passe_hashé"
}
]
}
```
5. Définissez les permissions appropriées :
```bash
chmod 755 .
chmod 644 config.json
chmod -R 755 stories/
chmod -R 755 assets/images/
```
## 📁 Structure du Projet
``` ```
/ /
├── admin/ # Zone administrative ├── admin/ # Zone administrative sécurisée
├── assets/ # Ressources statiques (CSS, JS, images) │ ├── api/ # Endpoints API pour les opérations CRUD
│ ├── index.php # Dashboard administratif
│ └── login.php # Page de connexion
├── assets/ # Ressources statiques
│ ├── css/ # Styles CSS
│ ├── js/ # Scripts JavaScript
│ └── images/ # Images uploadées
│ ├── covers/ # Couvertures des romans
│ └── chapters/ # Images des chapitres
├── includes/ # Fichiers PHP réutilisables ├── includes/ # Fichiers PHP réutilisables
├── stories/ # Romans au format JSON ├── stories/ # Dossier contenant les récits (JSON)
├── config.json # Configuration du site ├── config.json # Configuration du site
└── index.php # Page d'accueil └── index.php # Page d'accueil publique
``` ```
## Sécurité ## 🔒 Sécurité
- Authentification sécurisée avec hashage des mots de passe - Authentification sécurisée avec hashage des mots de passe
- Protection contre les injections et les attaques XSS - Protection contre les attaques XSS et CSRF
- Validation des données et restrictions sur les uploads - Validation des données entrantes
- Sanitization des sorties HTML
- Restrictions sur les types de fichiers uploadés
- Redimensionnement automatique des images
- Sessions sécurisées avec paramètres renforcés
## License ## 🌐 Utilisation
### Interface Administrative
1. Accédez à `/admin` et connectez-vous
2. Utilisez le menu pour gérer vos romans et chapitres
3. L'éditeur WYSIWYG permet une mise en forme riche du texte
4. Uploadez des images directement dans l'éditeur
5. Réorganisez les chapitres par glisser-déposer
6. Prévisualisez vos modifications avant publication
### Interface Publique
- La page d'accueil liste tous les romans disponibles
- Chaque roman a sa page dédiée avec description et chapitres
- Navigation fluide entre les chapitres
- Interface adaptative pour une lecture confortable sur tous les appareils
- Optimisation des images selon la taille d'écran
## 💾 Structure des Données
### Configuration (config.json)
```json
{
"site": {
"name": "Nom du Site",
"description": "Description du site",
"logo": "path/to/logo.png"
},
"users": [
{
"id": "admin",
"password": "hashed_password"
}
]
}
```
### Romans (stories/roman-id.json)
```json
{
"id": "roman-id",
"title": "Titre du Roman",
"description": "Description complète",
"cover": "assets/images/covers/cover.jpg",
"created": "2025-02-14",
"updated": "2025-02-14",
"chapters": [
{
"id": "chapitre-1",
"title": "Titre du Chapitre",
"content": "Contenu au format Delta/HTML",
"created": "2025-02-14",
"updated": "2025-02-14"
}
]
}
```
## 🤝 Contribution
Les contributions sont les bienvenues ! Pour contribuer :
1. Forkez le projet
2. Créez une branche pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`)
3. Committez vos changements (`git commit -m 'Add some AmazingFeature'`)
4. Poussez vers la branche (`git push origin feature/AmazingFeature`)
5. Ouvrez une Pull Request
## 📝 License
Ce projet est sous licence MIT - voir le fichier [LICENSE.md](LICENSE.md) pour plus de détails. Ce projet est sous licence MIT - voir le fichier [LICENSE.md](LICENSE.md) pour plus de détails.

@ -45,9 +45,7 @@ $canViewDrafts = Auth::check() && Auth::canAccessStory($storyId);
<div class="novel-header-background" style="background-image: url('<?= htmlspecialchars($story['cover']) ?>');"></div> <div class="novel-header-background" style="background-image: url('<?= htmlspecialchars($story['cover']) ?>');"></div>
<?php endif; ?> <?php endif; ?>
<div class="header-actions"> <div class="header-actions">
<a href="index.php" class="about-button"> <a href="index.php" class="about-button">Accueil</a>
<i class="fas fa-home"></i> Accueil
</a>
</div> </div>
<h1><?= htmlspecialchars($story['title']) ?></h1> <h1><?= htmlspecialchars($story['title']) ?></h1>
</header> </header>

@ -1 +1 @@
1.3.3 1.3.2