A modern twist on the classic Tic Tac Toe game built with React (Vite) and TypeScript.
In this version, each player can only have three active moves on the board at any time. When a player makes a fourth move, their oldest move is automatically removed, creating a dynamic and strategic gameplay experience.
- Two players: X and O
- Players take turns placing their mark on a 3×3 board
- Each player can only have 3 active moves
- On the 4th move, the oldest move disappears
- The board is constantly changing, encouraging strategy and foresight
- React (with Vite)
- Node JS (Express)
- TypeScript
- Deployed via Vercel / Render
src/
├─ App.tsx # Main game logic and UI
├─ App.css # Component-level styles
├─ main.tsx # React entry point
└─ index.css # Global stylesThe project intentionally keeps a simple structure to focus on game logic, state management, and clarity.
- React state management using
useState - Immutable state updates
- Custom game rules implementation
- Queue-based logic to remove the oldest move
- UI updates driven entirely by state
git clone <your-repo-url>
cd tictactoe-twistnpm installRunning frontend side
npm run devThe app will be available at:
http://localhost:5173Running server side Navigate to the server directory:
cd serverStart the server:
npx tsx index.tsThe server will start on:
http://localhost:3001The project can be deployed for free using:
Netlify (drag-and-drop dist/ folder)
Vercel (vercel CLI)
Build command:
npm run buildNo authentication is required for this demo project. The game runs entirely on the client for simplicity.
This project was created as a time-boxed technical exercise to demonstrate:
- Problem-solving
- Frontend fundamentals
- Clean and readable React code
It is intended for evaluation and learning purposes only.
Ace Borja