โ Back to Projects
99 - Multiplayer Card Game
Real-time multiplayer card game with turn-based state management, featuring a robust CI/CD pipeline and cloud deployment.
Overview
99 is a real-time multiplayer card game built with modern web technologies. The game supports multiple players in simultaneous sessions, with turn-based state management and low-latency synchronization using WebSockets and Redis.
The project demonstrates full-stack development skills, from frontend game logic to backend state management, and includes a production-ready CI/CD pipeline with automated deployment to AWS.
Features
- Real-time multiplayer gameplay with WebSocket connections
- Turn-based state management with Redis for low-latency synchronization
- Session recovery using cookies for seamless reconnection
- CI/CD pipeline with GitHub Actions for automated builds
- Multi-container deployment (Node.js, Redis, Nginx) on AWS EC2
- GitHub Container Registry (GHCR) for container management
Rules
Card scores
- Number cards have score equal to their number (2 is worth 2, 3 is 3, etc.)
- Jacks have 0 score - essentially a skip turn
- Queens can be either + or - 20 (players can choose)
- Aces can be either 1 or 11
- Kings have 0 score. They are kill cards (see King Challenge below)
Gameplay
- Each player is dealt 2 cards
- Each player must play a card during their turn, then pick a card from the deck
- If the score goes over 99, the player is out
King Challenge
If a player plays a king, they can choose any other player to eliminate.
- The targeted player can defend by playing either a king or a 4.
- If the targeted player plays a king, the original (attacking) player is eliminated instead.
- If the targeted player plays a 4, the attack is neutralized, and both players survive.
- If the targeted player has no king or 4, they are eliminated.
Tech Stack
- TypeScript
- Next.js
- Node.js
- Express.js
- WebSockets
- Redis
- AWS EC2
- Docker
- Nginx
- GitHub Actions
Visuals
Screenshots and demos coming soon.