LF
back to home
RedTetris logo

RedTetris

Real-time multiplayer Tetris played in rooms: completing a line penalizes the other players, and the last player standing wins. Built by a team of two as a 42 school project.

42 school · Two-person project

The game

  • ▸Each player joins a room with a nickname and room name. The first player to join becomes the owner.
  • ▸The owner starts the game, triggering a countdown for everyone at the same time.
  • ▸All players receive exactly the same piece sequence, generated and controlled by the server.
  • ▸Completing a line sends a penalty line to your opponents. The last player standing wins.

In pictures

RedTetris home screenGame board during a match

Under the hood

The Next.js frontend only displays what the server sends: the board, next piece, score and room members. The Node.js backend is authoritative over the entire game, including piece generation, rooms and penalty lines, and broadcasts game state via Socket.IO. It is covered by 224 Jest tests, reaching roughly 82% coverage, a requirement of the project at 42.

Backend Jest coverage report, with roughly 82% of lines covered

Frontend

  • Next.js 16
  • React 19
  • Tailwind CSS 4
  • Socket.IO Client
  • GSAP
  • Radix UI

Backend

  • Node.js
  • Express
  • Socket.IO
  • MongoDB
  • Jest — ~82% coverage
  • SWC

Context

  • ▸Built with Valentin Delafosse.
  • ▸The GitHub repository is private, as required for projects at 42.