128 lines
2.8 KiB
Markdown
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.
|