# 📝 Blog Duhaz

Blog personnel développé avec Django 5.1 LTS.

## ✨ Nouvelles Fonctionnalités (Octobre 2025)

- 🔒 **Sécurité renforcée** : Variables d'environnement, nouvelle SECRET_KEY
- 🚀 **Django 5.1 LTS** : Mise à jour depuis Django 3.2
- 📦 **Gestion moderne** : Scripts d'installation automatisés
- 🔧 **Code nettoyé** : Suppression des méthodes dépréciées Python 2

---

## 🚀 Installation Rapide

### Prérequis
- Python 3.10+ 
- pip

### Installation

```bash
# 1. Cloner le projet (si pas déjà fait)
cd /Users/duhaz/projets/blog-duhaz

# 2. Lancer l'installation automatique
./install.sh

# 3. Démarrer le serveur
./start.sh
```

Le blog sera accessible sur : **http://127.0.0.1:8000/blog/**

---

## 📋 Installation Manuelle

Si vous préférez installer manuellement :

```bash
# 1. Créer l'environnement virtuel
python3 -m venv venv
source venv/bin/activate

# 2. Installer les dépendances
pip install -r requirements.txt

# 3. Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos paramètres

# 4. Appliquer les migrations
python manage.py makemigrations
python manage.py migrate

# 5. Créer un superutilisateur (optionnel)
python manage.py createsuperuser

# 6. Lancer le serveur
python manage.py runserver
```

---

## 🏗️ Structure du Projet

```
blog-duhaz/
├── blog/               # Application blog
│   ├── models.py      # Modèles Article, Catégorie
│   ├── views.py       # Vues du blog
│   └── templates/     # Templates du blog
├── core/              # Application core (pages statiques)
│   ├── models.py      # Modèles Page, SpeedDial, Contact
│   ├── views.py       # Vues génériques
│   └── templates/     # Templates globaux
├── duhaz_blog/        # Configuration Django
│   ├── settings.py    # Paramètres (sécurisés)
│   └── urls.py        # Routes principales
├── static/            # Fichiers statiques (CSS, JS, images)
├── .env               # Variables d'environnement (NON COMMITÉ)
├── .env.example       # Template de configuration
├── requirements.txt   # Dépendances Python
├── install.sh         # Script d'installation
└── start.sh          # Script de démarrage
```

---

## 🔧 Configuration

### Fichier `.env`

Copiez `.env.example` vers `.env` et configurez :

```env
SECRET_KEY=votre-cle-secrete-unique
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
DATABASE_NAME=db.sqlite3
```

### Générer une nouvelle SECRET_KEY

```bash
python3 -c "import secrets; print(''.join(secrets.choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)))"
```

---

## 🎨 Fonctionnalités

### Blog
- ✍️ Création et gestion d'articles
- 🏷️ Catégorisation des articles
- 🔍 Recherche dans les articles
- 📊 Compteur de lectures
- 📅 Publication programmée
- 🖼️ Support des images

### Pages Statiques
- 📄 Création de pages personnalisées
- 🎯 SpeedDial (raccourcis)
- 📮 Formulaire de contact
- 🔐 Pages protégées par authentification

### Administration
- 👨‍💼 Interface d'administration Django
- 📝 Éditeur WYSIWYG (Trumbowyg)
- 📤 Import/Export de données
- 👥 Gestion des utilisateurs

---

## 🔒 Sécurité

Voir le fichier [SECURITE.md](SECURITE.md) pour les détails complets.

**Points clés :**
- SECRET_KEY stockée dans `.env` (hors Git)
- DEBUG=False obligatoire en production
- ALLOWED_HOSTS configuré
- Protection CSRF activée
- Headers de sécurité prêts

---

## 📚 Documentation

- [MISE_A_JOUR.md](MISE_A_JOUR.md) - Guide de mise à jour Django 3.2 → 5.1
- [SECURITE.md](SECURITE.md) - Recommandations de sécurité
- [Django 5.1 Docs](https://docs.djangoproject.com/en/5.1/)

---

## 🛠️ Commandes Utiles

```bash
# Activer l'environnement virtuel
source venv/bin/activate

# Créer des migrations
python manage.py makemigrations

# Appliquer les migrations
python manage.py migrate

# Créer un superutilisateur
python manage.py createsuperuser

# Collecter les fichiers statiques
python manage.py collectstatic

# Lancer le serveur de développement
python manage.py runserver

# Lancer les tests
python manage.py test
```

---

## 🚀 Déploiement en Production

### Checklist avant déploiement

1. **Configuration**
   ```env
   DEBUG=False
   SECRET_KEY=nouvelle-cle-ultra-securisee
   ALLOWED_HOSTS=votredomaine.com,www.votredomaine.com
   ```

2. **Base de données**
   - Migrer vers PostgreSQL (recommandé)
   - Configurer les sauvegardes automatiques

3. **Sécurité**
   - Décommenter les paramètres de sécurité dans `settings.py`
   - Configurer HTTPS (Let's Encrypt)
   - Activer les headers de sécurité

4. **Performance**
   - Configurer un cache (Redis)
   - Utiliser Gunicorn comme serveur WSGI
   - Servir les fichiers statiques avec WhiteNoise ou Nginx

5. **Monitoring**
   - Configurer les logs
   - Mettre en place des alertes
   - Surveiller les performances

---

## 🐛 Dépannage

### Erreur "No module named 'dotenv'"
```bash
pip install python-dotenv
```

### Erreur de migration
```bash
python manage.py migrate --run-syncdb
```

### Le serveur ne démarre pas
- Vérifiez que `.env` existe
- Vérifiez que l'environnement virtuel est activé
- Consultez les logs d'erreur

---

## 📝 TODO / Améliorations Futures

- [ ] Ajouter des tests unitaires
- [ ] Migrer vers PostgreSQL
- [ ] Ajouter un système de cache (Redis)
- [ ] Optimiser les requêtes (N+1 queries)
- [ ] Migrer vers Class-Based Views
- [ ] Ajouter une API REST (Django REST Framework)
- [ ] Améliorer la validation du contenu HTML (bleach)
- [ ] Ajouter pagination AJAX
- [ ] Système de commentaires
- [ ] Support multilingue

---

## 👤 Auteur

**Duhaz**

## 📄 Licence

Ce projet est sous licence privée.

---

## 🔗 Liens Utiles

- [Django Documentation](https://docs.djangoproject.com/)
- [Django Security](https://docs.djangoproject.com/en/5.1/topics/security/)
- [Python Best Practices](https://docs.python-guide.org/)
