Files
chesscubing/README.md

120 lines
3.9 KiB
Markdown

# ChessCubing Arena
Application web mobile-first pour téléphone et tablette, pensée comme application officielle de suivi de match pour `ChessCubing Twice` et `ChessCubing Time`.
## Ce que fait cette première version
- configure une rencontre `Twice` ou `Time`
- sépare l'application en pages dédiées : configuration, phase chrono, phase cube
- permet de définir librement le temps de block et le temps par coup
- suit les quotas `FAST`, `FREEZE` et `MASTERS`
- orchestre la phase cube avec désignation du cube, capture des temps et préparation du block suivant
- applique la logique du double coup V2 en `Twice`
- applique les ajustements `bloc -` et `bloc +` en `Time` avec plafond de 120 s pris en compte
- conserve un historique local dans le navigateur
- propose une page chrono pensée pour le téléphone avec deux grandes zones tactiles, une par joueur
- ouvre automatiquement la page cube dès que la phase chess du block est terminée
## Hypothèse de produit
Cette version est volontairement construite comme une **application d'arbitrage et de direction de match** autour d'un vrai échiquier physique, et non comme un moteur d'échecs complet. C'est le choix le plus fidèle aux règlements fournis et le plus réaliste pour une utilisation immédiate en club, en démonstration ou en tournoi.
## Démarrage avec Docker
```bash
docker compose down
docker compose up -d --build
```
L'application est ensuite disponible sur `http://localhost:8080`.
## Déploiement dans un LXC Proxmox
Deux scripts Bash permettent de créer un conteneur LXC Debian sur Proxmox puis de le mettre à jour depuis Git.
Prérequis sur la machine qui lance les scripts :
- `ssh`
- `sshpass`
Le déploiement dans le LXC n'utilise pas Docker. Le script installe `nginx`, `git` et `rsync` dans le conteneur, clone le dépôt puis publie uniquement les fichiers web.
### Installer un nouveau LXC
```bash
./scripts/install-proxmox-lxc.sh \
--proxmox-host 10.0.0.2 \
--proxmox-user root@pam \
--proxmox-password 'secret'
```
Version "curl | bash" :
```bash
bash -c "$(curl -fsSL https://git.jeannerot.fr/christophe/chesscubing/raw/branch/main/install-chesscubing-proxmox.sh)"
```
Cette version pose les questions nécessaires si les variables d'environnement ne sont pas déjà définies.
Valeurs par défaut utiles :
- LXC nommé `chesscubing-web`
- IP du LXC en `dhcp`
- branche Git `main`
- dépôt `https://git.jeannerot.fr/christophe/chesscubing.git`
Options utiles si besoin :
- `--ctid 120`
- `--lxc-ip 192.168.1.50/24 --gateway 192.168.1.1`
- `--template-storage local`
- `--rootfs-storage local-lvm`
- `--branch main`
À la fin, le script affiche :
- le `CTID`
- le mot de passe `root` du LXC
- l'URL probable du site
### Mettre à jour depuis Git
```bash
./scripts/update-proxmox-lxc.sh \
--proxmox-host 10.0.0.2 \
--proxmox-user root@pam \
--proxmox-password 'secret' \
--ctid 120
```
Version "curl | bash" :
```bash
bash -c "$(curl -fsSL https://git.jeannerot.fr/christophe/chesscubing/raw/branch/main/update-chesscubing-proxmox.sh)"
```
On peut aussi cibler le conteneur par nom si on n'a pas le `CTID` :
```bash
./scripts/update-proxmox-lxc.sh \
--proxmox-host 10.0.0.2 \
--proxmox-user root@pam \
--proxmox-password 'secret' \
--hostname chesscubing-web
```
Le script de mise à jour exécute un `git pull --ff-only` dans le conteneur puis republie les fichiers statiques via `nginx`.
## Fichiers clés
- `index.html` : page d'accueil du site
- `application.html` : page de configuration et reprise de match
- `chrono.html` : page dédiée à la phase chrono
- `cube.html` : page dédiée à la phase cube
- `reglement.html` : page éditoriale qui présente le règlement officiel
- `styles.css` : design mobile/tablette
- `app.js` : logique de match et arbitrage
- `docker-compose.yml` + `Dockerfile` : exécution locale
- `scripts/install-proxmox-lxc.sh` : création et déploiement d'un LXC Proxmox
- `scripts/update-proxmox-lxc.sh` : mise à jour d'un LXC existant depuis Git