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 :
http://127.0.0.1:1025
Le backend reste aussi directement disponible sur :
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.
docker compose up -d --build
Logs :
docker compose logs -f backend
docker compose logs -f frontend
Mise à jour :
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 :
ADMIN_USERNAME=...
ADMIN_PASSWORD=...
ADMIN_FIRST_NAME=...
ADMIN_LAST_NAME=...
L'administration est accessible sur :
/admin
Notifications ntfy
Le site fonctionne même sans notification externe.
Pour activer les notifications :
- installer l'app ntfy sur le téléphone ;
- choisir un nom de topic difficile à deviner ;
- s'abonner à ce topic dans l'app ;
- renseigner ce même topic dans
.env:
NTFY_SERVER=https://ntfy.sh
NTFY_TOPIC=mon-topic-prive
- relancer le backend :
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 :
https://gitea.louismazin.ovh/LouisMazin/Planning
Premier push depuis le dossier du projet :
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
.envn'est pas envoyé sur Git grâce au.gitignore. Garde-le uniquement sur le serveur.