- Allez sur Google Cloud Console
- Créer un projet Google
- Naviguer dans
APIs & Services>Credentials - Créer des identifiants OAuth
- Ajouter
http://127.0.0.1:8000/google/auth/dans les URI autorisées - Copiez le
Client IDet leClient Secretdans le fichier.envà la racine du projet
cd dev_env
docker-compose up -dFront-end
- HTML
- CSS vanilla
- JavaScript vanilla
- HTMX
Back-end
- Python avec Flask + Flask Login + authlib
- MariaDB
Chaque page a un CSS dedié. main.css applique le style de base.
Schéma templating
inclure head
import CSS et JS
inclure header
PAGE
inclure footer
Commun à toutes les pages :
cookie.js: gère les cookies, en particulier le thème sombrerequest_args.js: récupère les argumentserrorouinfode la page et injecte le texte dans la pagetransition_fix_chromium.js: fixe un bug de transition sur Chromium
catalog.js : rajoute un popup avec la description du jeu quand on clique sur l'image
Espaces admin :
Arboréscence admin.js
Dates
Tables
Reservation
User
Pages
Reservation
Events
Games
Online games
Users
Pour les éléments qui changent dynamiquement comme par exemple les formulaires ou le catalogue, on utilise HTMX pour envoyer les requêtes et gérer les réponses.
HTMX envoie une rêquete avec potentiellement des données avec, puis le serveur renvoie du HTML déjà construit qui sera ensuite remplacé par HTMX dans la page.
r_: "requête GET" -> template HTML: Routehx_: "requête POST HTMX" -> HTML: Fonction qui intéragie avec HTMX
Arboréscence du code Flask
Initialization
Database
User
Images
Routes
Google
Admin
Reservations
Events
Games
Online games
Users
src/
static/
fonts/
images/
games/
Image des jeux
icons/
**.svg
online_games/
Image des jeux en ligne
scripts/
**.js
styles/
**.css
templates/
**.html
app.py
init_db.py
.env
docker-compose.yml
Dockerfile
requirements.txt
GET
//catalog/event/<int:id>/googleconnexion CETEN/userprofile (c)/admin(a)/edit/event/<int:id>(a)
POST
/catalogmet à jour les items du catalogue/reserve(c)/event/<int:id>s'inscrit à l'évent (c)/logout/reservations/page/<int:page>(a)/edit/reservation/<int:id>(a)/delete/reservation/<int:id>(a)/events/page/<int:page>(a)/create/event(a)/edit/event/<int:id>(a)/delete/event/<int:id>(a)/games/page/<int:page>(a)/create/game(a)/delete/game/<int:id>(a)/online-games/page/<int:page>(a)/create/online-game(a)/delete/online-game/<int:id>(a)/users/page/<int:page>(a)/edit/user/<int:id>(a)/delete/user/<int:id>(a)
(c) besoin d'être connecté
(a) besoin d'être admin
Voir fichier init_db.sql pour la structure de la base de donnée.