Planning/README.md
Louis Mazin 09ff6dd430 init
2026-10-02 15:54:40 +02:00

128 lines
2.8 KiB
Markdown

# 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.