- 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>
1.9 KiB
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
- Le joueur ouvre
jeu.cosmolan.fr(Next.js + Phaser) - Il se connecte via Socket.io à
api.jeu.cosmolan.fr(Node.js) - Le matchmaking place deux joueurs dans une "room"
- Chaque joueur calcule localement un
keccak256(choice, nonce)et l'envoie (commit) - Le serveur attend les deux commits, puis déclenche la phase Suspense
- Les joueurs envoient leur
choiceetnonce(reveal) - Le serveur (et le smart contract) vérifient les hashes et déterminent le gagnant
- 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