2026-04-12 20:25:26 +02:00
2026-04-12 20:25:26 +02:00

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 partie 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 de la partie suivante
  • 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 de la partie 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

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 :

  • en mode distant : ssh et sshpass
  • en mode local sur l'hôte Proxmox : aucun paquet supplémentaire n'est installé sur Proxmox

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 principal, synchronise aussi le projet d'Ethan, puis publie uniquement les fichiers web.

Installer un nouveau LXC

./scripts/install-proxmox-lxc.sh \
  --proxmox-host 10.0.0.2 \
  --proxmox-user root@pam \
  --proxmox-password 'secret'

Version "curl | 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.

Si elle est lancée directement sur l'hôte Proxmox, elle passe automatiquement en mode local :

  • elle ne demande ni serveur, ni login, ni mot de passe SSH
  • elle n'installe rien sur l'hôte Proxmox
  • elle crée uniquement le LXC puis installe les dépendances dans ce LXC

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
  • dépôt Ethan https://git.jeannerot.fr/Mineloulou/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
  • --ethan-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

./scripts/update-proxmox-lxc.sh \
  --proxmox-host 10.0.0.2 \
  --proxmox-user root@pam \
  --proxmox-password 'secret' \
  --ctid 120

Version "curl | bash" :

bash -c "$(curl -fsSL https://git.jeannerot.fr/christophe/chesscubing/raw/branch/main/update-chesscubing-proxmox.sh)"

Sur l'hôte Proxmox, cette commande met à jour le LXC local sans passer par SSH. Par défaut, elle cible le conteneur chesscubing-web sans demander le CTID.

On peut aussi cibler le conteneur par nom si on n'a pas le CTID :

./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 pour le dépôt principal et le dépôt d'Ethan dans le conteneur, puis republie les fichiers statiques via nginx, y compris la route /ethan/.

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
Description
ChessCubing Arena
Readme 1.9 MiB
Languages
HTML 49.9%
JavaScript 32.7%
CSS 13.3%
Shell 4.1%