elouann.dev
EN — English version

ProjetsWeb, jeux & communautés

Transcendence

Onitama en ligne, en équipe

Période
juil. 2026 – oct. 2026
Cadre
cursus 42
Équipe
en groupe
Note
pas encore évaluée
  • TypeScript
  • NestJS
  • Svelte
  • Docker
  • Prisma
  • Node.js
  • PostgreSQL
  • DevOps
  • Web
  • Jeu

Voir le code

Le dernier projet du Tronc Commun de 42, à cinq : une adaptation web du jeu de plateau Onitama, jouable en ligne contre d’autres joueurs ou contre une IA.

navigateurSvelteWAFModSecurityVaultsecretsback-end NestJSauthJWTA2FTOTPutilisateursamismessagesmailSMTPpartiesfilematchmakingjeuWebSocketIAalpha-bêtainvitationsévénementsWebSocketPostgreSQLPrismaRedissync des WebSockets
SchémaL’architecture de l’application. Les modules sur lesquels j’ai surtout travaillé sont mis en avant.

Le jeu

Onitama se joue sur un plateau de 5 × 5, avec des cartes de déplacement qui s’échangent entre les joueurs. Notre version propose le matchmaking, les invitations entre amis, une messagerie, des profils, l’A2F, et des fonctionnalités liées au RGPD, dans un univers dessiné par l’équipe.

L’IA cherche ses coups avec un algorithme alpha-bêta, sur quatre niveaux de difficulté qui changent la profondeur de recherche.

L’architecture

Le front-end est en Svelte, le back-end en NestJS, découpé en modules. Les parties en temps réel (partie en cours, file d’attente, notifications) passent par des WebSockets, synchronisés par Redis. Les données sont dans PostgreSQL via Prisma.

Côté sécurité, un pare-feu applicatif (ModSecurity) filtre les requêtes avant le back-end, et tous les secrets sont stockés dans Vault, générés au premier lancement.

Ma part

Je me suis occupé de parties du back-end et du DevOps : notamment l’authentification et l’A2F, les utilisateurs, les amis, les messages et l’envoi de mails, ainsi que la mise en place du back-end et de son conteneur.

À cinq, le plus dur n’était pas le code : il fallait se coordonner, se mettre d’accord sur les interfaces entre front et back, et communiquer en continu.

Ce que j’en retiens

  • Dans une équipe, une API bien définie évite des journées de malentendus.
  • La sécurité se pense dès l’architecture, pas à la fin.