# Planning Petit site de planning public + demandes de disponibilité, avec une administration séparée. ## Fonctionnalités ### Public - consulter le planning semaine par semaine ; - voir l'état prévu : **Disponible**, **Occupé** ou **Indisponible** ; - envoyer une demande de disponibilité immédiate sans compte ; - suivre la réponse automatiquement avec un lien/token privé ; - voir une durée de disponibilité si l'admin en indique une. ### Administration - connexion par compte admin ; - créer une plage sur un jour ou plusieurs jours ; - modifier/supprimer les plages directement depuis le planning ; - recevoir et traiter les demandes ; - accepter pour 15 min, 30 min, 1 h, une durée personnalisée, ou sans durée ; - refuser avec un message optionnel ; - actualisation automatique des demandes toutes les 15 secondes. ## Stack - Frontend : React + Vite + Tailwind CSS - Backend : Django + Django REST Framework + JWT - Base : MariaDB/MySQL externe - Reverse proxy du frontend : Nginx - Notifications optionnelles : ntfy ## Ports - Frontend : `1025` - Backend : `1031` Le frontend proxy automatiquement `/api/` vers le backend. Pour le domaine public, le reverse proxy principal peut donc pointer uniquement sur : ```text http://127.0.0.1:1025 ``` Le backend reste aussi directement disponible sur : ```text http://127.0.0.1:1031 ``` ## Lancement Le fichier `.env` fourni au déploiement contient la configuration réelle. Il est volontairement ignoré par Git. ```bash docker compose up -d --build ``` Logs : ```bash docker compose logs -f backend docker compose logs -f frontend ``` Mise à jour : ```bash git pull docker compose up -d --build ``` ## Compte admin Au démarrage du backend, les variables suivantes créent ou mettent à jour automatiquement le compte admin : ```env ADMIN_USERNAME=... ADMIN_PASSWORD=... ADMIN_FIRST_NAME=... ADMIN_LAST_NAME=... ``` L'administration est accessible sur : ```text /admin ``` ## Notifications ntfy Le site fonctionne même sans notification externe. Pour activer les notifications : 1. installer l'app **ntfy** sur le téléphone ; 2. choisir un nom de topic difficile à deviner ; 3. s'abonner à ce topic dans l'app ; 4. renseigner ce même topic dans `.env` : ```env NTFY_SERVER=https://ntfy.sh NTFY_TOPIC=mon-topic-prive ``` 5. relancer le backend : ```bash docker compose restart backend ``` Une nouvelle demande publique déclenche alors une notification avec un lien vers `/admin/requests`. ## Gitea Dépôt prévu : ```text https://gitea.louismazin.ovh/LouisMazin/Planning ``` Premier push depuis le dossier du projet : ```bash git init git branch -M main git remote add origin https://gitea.louismazin.ovh/LouisMazin/Planning.git git add . git commit -m "Initial planning app" git push -u origin main ``` > `.env` n'est pas envoyé sur Git grâce au `.gitignore`. Garde-le uniquement sur le serveur.