Application PocketBase - Vite + React pour shotgun son fillot à la rentrée. Cette application, originalement réécrite par Benjamin Grolleau, a été mise open source afin de faire en sorte que n'importe qui puisse l'améliorer
- Mise à jour en temps réel sans raffraichissement.
- Se connecter avec le CAS et avoir ses bons rôles, fillières, etc.
- Voir les réponses des 1A de sa fillières grâce aux informations CAS.
- Possibilité de shotgun un fillot.
- Plusieurs vagues de shotgun en fonction de son association ou non.
Après avoir compilé l'image docker, il faut configurer l'OIDC en accédant au chemin /_/#/settings/auth-providers dans l'interface admin. Puis :
- Cliquez sur "OpenID Connect (oidc)"
- Remplissez "Client ID" et "Client secret", puis :
Du côté de la base de données, deux tables ont étés mit en place:
- users (Type: Auth) - Cette table se complète automatiquement quand un nouvel utilisateur se connecte via le CAS
- firstName: Text
- lastName: Text
- diploma: Text
- shotgunDate: Date
- favorites: relation multiple sur users
- parrain: relation simple sur users
- infos: JSON
- API Rules: List/Search rule a été changée pour vide
- config (Type Base)
- key: text
- value: text
- API Rules: List/Search et View sont mit a vide
- 2 champs ont étés complétés:
- "TIME": "now" (Se met a jour via un cron dans le backend)
- "MAX_FILLOTS": 5
Normalement, les schéma sont gérés par les scripts de migrations, il faut juste rajouter les config.
Finalement, il faut rajouter les images de personnes pour la page d'accuueil.
- Framework: React + Zustand
- CSS: Tailwind
- Database: Pocketbase
On a choisi PocketBase car c'est une base de donnée et un backend opensource et surtout self hostable qui fonctionne en temps réel de la même manière que FireBAse mais complétement gratuite. Pour un usage applicatif au sein de l'Enseirb-Matmeca, cela suffit largement, en septembre 2023, la quasi totalitée des 2A étaient connectés dessus en même temps et cela fonctionnait.
Puisque PocketBase est un backend, la majorité se fait sur l'interface graphique mais pour implémenter des logiques plus poussées (aka connexion par CAS), on peut écrire un script en js et en go. Le JS a été choisi, le fichier est backend/pb_hooks/main.pb.js
A noter que PocketBase tient en un exécutable qu'il faut télécharger depuis le site PocketBase Un décalage temporel ainsi que des lenteurs sont constatés lors de l'usage de WSL.
Copier le fichier de permettant de lister les CAS ayant un shotgun prioritaire. Puis éditer le nouveau fichier.
cp ./backend/pb_hooks/shotgun_groups.csv{.example,} && vim ./backend/pb_hooks/shotgun_groups.csvDe même avec les dérogations
cp ./backend/pb_hooks/derogations.csv{.example,} && vim ./backend/pb_hooks/derogations.csvAjouter les photos que vous souhaitez mettre en avant sur le site dans le dossier ./frontend/public/img/members.
npm inpm run dev
Le site est accessible en développement sur http://localhost:5173 et l'administration PocketBase est accessible sur http://localhost:5173/_. L'api, quand à elle, est accessible sur http://localhost:5173/api
# A la base du projet
npm run buildLe build du front est realiser dans le dossier backend/pb_public
https://pocketbase.io/docs/going-to-production/#minimal-setup