# AccroCbio — site React / Django Refonte éditoriale du site coursbiologiechaillou.fr, basée sur l'architecture `Site`. ## Stack conservée - **Frontend** : React 19, Vite, Tailwind CSS 4, composants shadcn existants, port **1028**. - **Backend** : Django + Django REST Framework, port **1029**. - **Base** : MySQL 8 / MariaDB compatible, identifiants via `.env`. - **Docker** : `docker-compose.yml`, `frontend/dockerfile` et `backend/dockerfile` **inchangés**. - **Gestion du contenu** : Django Admin (`/admin/`) pour les PDF/liens, les avis, les offres et les messages. ## Mise en place 1. Utiliser **une nouvelle base de données**, distincte de celle du site de boulangerie. Ne pas pointer sur une base de production existante. 2. Copier `.env.example` vers `.env`, renseigner les secrets forts et le domaine réel (`ALLOWED_HOSTS`). 3. `docker compose up -d --build` (ou le script `start.sh` dans un conteneur Pterodactyl configuré comme auparavant). 4. `docker compose exec backend python manage.py migrate`. 5. `docker compose exec backend python manage.py createsuperuser` : il permet l'accès à `/admin/`. 6. En production, placer le frontend et `/api/` derrière nginx sous le même domaine HTTPS. Vite preview/Django runserver restent des outils de développement : pour une exposition publique durable, préférer un serveur statique et Gunicorn. Les migrations insèrent des références à quelques **PDF déjà publics** (liens externes uniquement). L'auteur des documents et son hébergement gardent leurs droits. Il faut ajouter dans l'administration les PDF manquants dont le lien n'a pas été vérifié. Aucune archive PDF tierce n'est embarquée. ### Ressources administrables - `GET /api/education/resources/?category=svt-premiere` - `GET /api/education/testimonials/` - `GET /api/education/announcements/` - `POST /api/education/contact/` (limite anonyme : 5 par heure par adresse IP, messages visibles depuis l'admin). La notification des messages par mail est facultative et s'active via `CONTACT_NOTIFICATION_EMAIL`, `EMAIL_HOST`, `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD`, etc. Sans SMTP, le contact **est enregistré en base** mais aucun mail n'est envoyé. ### Pages livrées Accueil, Présentation, Services à la personne, Avance immédiate, Ressources (SVT Seconde/Première/Terminale, BPH, SBM, STL Première/Terminale), Contact, Avis, Offre de rentrée, Mentions légales, Confidentialité. ### Points à personnaliser avant publication - Renseigner l'hébergeur et valider les mentions légales / la politique de confidentialité. - Vérifier avec la propriétaire le droit d'utiliser le nom AccroCbio, les informations personnelles et les documents existants. - Confirmer la validité de toute offre avant de l'activer dans Django Admin (offre de septembre 2026 désactivée par défaut). - Définir une durée de rétention et un processus de purge pour les demandes de contact. - Configurer HTTPS, `ALLOWED_HOSTS`, SMTP si nécessaire, sauvegardes DB et éventuel cache partagé pour le throttling si plusieurs workers. ## Tests - Backend : `python manage.py test education` (requiert les dépendances Python et une DB de test). - Frontend : `npm ci && npm run build`. ## Sécurité Les fichiers `.env`, `.git` et les anciens modules de gestion de la boulangerie sont exclus de l'archive de distribution. Le modèle utilisateur personnalisé `users.User` et ses migrations sont préservés pour compatibilité avec l'ancienne structure de la base et l'administration Django.