elouann.dev
FR — version française

ProjectsWeb, games & communities

Transcendence

Online Onitama, as a team

Period
Jul 2026 – Oct 2026
Context
42 curriculum
Team
group
Grade
not graded yet
  • TypeScript
  • NestJS
  • Svelte
  • Docker
  • Prisma
  • Node.js
  • PostgreSQL
  • DevOps
  • Web
  • Game

View source

The last project of 42’s Common Core, as a team of five: a web adaptation of the board game Onitama, playable online against other players or against an AI.

browserSvelteWAFModSecurityVaultsecretsNestJS back-endauthJWT2FATOTPusersfriendsmessagesmailSMTPmatchesqueuematchmakinggameWebSocketAIalpha-betainviteseventsWebSocketPostgreSQLPrismaRedisWebSocket sync
DiagramThe application’s architecture. The modules I mostly worked on are highlighted.

The game

Onitama is played on a 5 × 5 board, with movement cards that pass between players. Our version offers matchmaking, invitations between friends, chat, profiles, 2FA and GDPR-related features, in a universe drawn by the team.

The AI picks its moves with an alpha-beta search, over four difficulty levels that change the search depth.

The architecture

The front-end is in Svelte, the back-end in NestJS, split into modules. Real-time parts (live game, queue, notifications) go through WebSockets, kept in sync by Redis. Data lives in PostgreSQL through Prisma.

On the security side, a web application firewall (ModSecurity) filters requests before the back-end, and all secrets are stored in Vault, generated on first launch.

My part

I worked on parts of the back-end and the DevOps: notably authentication and 2FA, users, friends, messages and emails, as well as setting up the back-end and its container.

With five people, the hardest part was not the code: we had to coordinate, agree on the interfaces between front and back, and communicate constantly.

What I took away

  • In a team, a well-defined API saves days of misunderstandings.
  • Security is designed into the architecture, not added at the end.