Ismail El Abbassi
Tic-Tac-Toe Arena interface

Platform · Real-time2026

Tic-Tac-Toe Arena

A real-time competitive platform, built by five people as five cooperating services.

5 services

Django, Node and Flask

Socket.IO

Turn, lobby and bracket sync

Team of 5

42 capstone, I was PO

Overview

Tic-Tac-Toe Arena is the 42 capstone: a competitive platform where players match against each other or against an AI, earn XP, climb a leaderboard, run tournaments, and chat while they wait. It runs as five application services — Django for auth, Node and TypeScript for game and chat, Flask for the two AI services — behind an Nginx gateway with ModSecurity and TLS, orchestrated by Docker Compose with HashiCorp Vault holding every secret.

I was Product Owner and built the game backend end to end: the engine, matchmaking with direct friend invitations, the tournament system and its bracket engine, the leaderboard, and the dashboard. The game was never the hard part — tic-tac-toe is nine squares. The hard part was making a socket connection that can drop at any moment behave like a reliable transaction. A player who closes their laptop mid-match has to come back and find the board where they left it, and a tournament with a disconnected player still has to advance.

What it does

  • 01Real-time 1v1 matches with synchronised turns over Socket.IO
  • 02Matchmaking with direct friend invitations, and disconnect / reconnect recovery mid-match
  • 03Tournament system: bracket generation, seeded players, and an engine that advances rounds as matches resolve
  • 04Global leaderboard with per-player statistics and full match history
  • 05Dashboard aggregating XP, recent results and standing
  • 06Postgres persistence through Prisma for games, lobbies and tournament state
  • 07A Q-learning AI opponent and an LLM chatbot, each isolated in its own Flask service
  • 08Nginx reverse proxy with TLS termination and a ModSecurity WAF on the OWASP Core Rule Set