rps-royale/docs/ARCHITECTURE.md
Ubuntu 52565bf1a3 Phase 0: docs, CI/CD, Tailwind config, and Forgejo workflow
- Add Forgejo Actions deploy workflow
- Add documentation (ARCHITECTURE, DEPLOYMENT, SMART_CONTRACT, API_REFERENCE)
- Add Tailwind and PostCSS configs for web app
- Configure Git remote for Forgejo

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 02:19:01 +00:00

1.9 KiB

Architecture — The Arena RPS Royale

Vue d'ensemble

Le projet est un monorepo organisé en trois applications et un package partagé, orchestré par Docker Compose.

rps-royale/
├── apps/
│   ├── web/       # Next.js 15 + Phaser 3 (frontend jeu)
│   ├── server/    # Node.js + Socket.io + Express (backend temps réel)
│   └── contracts/ # Hardhat + Solidity (smart contract commit-reveal)
├── packages/
│   └── shared/    # Types et constantes TypeScript partagés
└── docker-compose.yml

Flux de données

  1. Le joueur ouvre jeu.cosmolan.fr (Next.js + Phaser)
  2. Il se connecte via Socket.io à api.jeu.cosmolan.fr (Node.js)
  3. Le matchmaking place deux joueurs dans une "room"
  4. Chaque joueur calcule localement un keccak256(choice, nonce) et l'envoie (commit)
  5. Le serveur attend les deux commits, puis déclenche la phase Suspense
  6. Les joueurs envoient leur choice et nonce (reveal)
  7. Le serveur (et le smart contract) vérifient les hashes et déterminent le gagnant
  8. Le pot est distribué par le smart contract RPSArena.sol

Réseau Docker

Tous les services partagent le réseau npm_default (géré par Nginx Proxy Manager).

Service Port conteneur Port hôte Exposé via NPM
rps-web 3000 127.0.0.1:3050 jeu.cosmolan.fr
rps-server 3001 127.0.0.1:3051 api.jeu.cosmolan.fr
rps-db 5432 127.0.0.1:3052 Interne
rps-redis 6379 127.0.0.1:3053 Interne
hardhat-node 8545 127.0.0.1:3054 Interne

Technologies clés

  • Phaser 3 : moteur 2D pour les animations, particules et scènes de jeu
  • Socket.io : communication temps réel multijoueur
  • Hardhat : environnement de développement Ethereum avec tests automatiques
  • Prisma ORM : accès typé à PostgreSQL
  • Commit-Reveal : pattern blockchain anti-triche