Files
chesscubing/README.md

101 lines
3.5 KiB
Markdown

# ChessCubing Arena
Application web mobile-first pour telephone et tablette, maintenant migree vers **Blazor WebAssembly en C# / .NET 10**.
## Ce que fait l'application
- configure une rencontre `Twice` ou `Time`
- separe l'experience en pages dediees : configuration, phase chrono, phase cube
- permet de definir librement le temps de partie et le temps par coup
- suit les quotas `FAST`, `FREEZE` et `MASTERS`
- orchestre la phase cube avec designation du cube, capture des temps et preparation 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 l'etat du match dans le navigateur
- propose une page chrono pensee pour le telephone avec deux grandes zones tactiles
- ouvre automatiquement la page cube des que la phase chess est terminee
## Architecture
Le coeur de l'application se trouve dans `ChessCubing.App/`.
- `ChessCubing.App/Pages/` : pages Razor du site et de l'application
- `ChessCubing.App/Services/MatchEngine.cs` : logique metier des matchs
- `ChessCubing.App/Services/MatchStore.cs` : persistance navigateur
- `ChessCubing.App/wwwroot/` : assets statiques, manifeste, PDFs, appli Ethan
- `docker-compose.yml` + `Dockerfile` : build Blazor puis service via nginx
Le projet continue a exposer les routes historiques `index.html`, `application.html`, `chrono.html`, `cube.html` et `reglement.html`.
## Demarrage local
### Avec Docker
```bash
docker compose down
docker compose up -d --build
```
L'application est ensuite disponible sur `http://localhost:8080`.
### Avec .NET 10
```bash
dotnet restore ChessCubing.App/ChessCubing.App.csproj
dotnet run --project ChessCubing.App/ChessCubing.App.csproj
```
## Deploiement dans un LXC Proxmox
Deux scripts Bash permettent de creer un conteneur LXC Debian sur Proxmox puis de le mettre a jour depuis Git.
Prerrequis sur la machine qui lance les scripts :
- en mode distant : `ssh` et `sshpass`
- en mode local sur l'hote Proxmox : aucun paquet supplementaire n'est installe sur Proxmox
Le deploiement dans le LXC n'utilise pas Docker. Le script clone le depot, publie l'application Blazor dans le conteneur, puis sert le resultat via `nginx`.
### 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)"
```
### Mettre a 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)"
```
## Fichiers cles
- `ChessCubing.App/Pages/Home.razor` : page d'accueil du site
- `ChessCubing.App/Pages/ApplicationPage.razor` : configuration et reprise de match
- `ChessCubing.App/Pages/ChronoPage.razor` : phase chrono
- `ChessCubing.App/Pages/CubePage.razor` : phase cube
- `ChessCubing.App/Pages/RulesPage.razor` : synthese du reglement
- `ChessCubing.App/Services/MatchEngine.cs` : regles de jeu et transitions
- `docker-compose.yml` + `Dockerfile` : execution locale
- `scripts/install-proxmox-lxc.sh` : creation et deploiement d'un LXC Proxmox
- `scripts/update-proxmox-lxc.sh` : mise a jour d'un LXC existant depuis Git