# Splendor

> A browser version of Splendor with multiplayer lobbies, game rules, chat, and an AI advisor. A team project with tests from individual rules through browser play.

- Author: Benjamin Zhuang
- Category: Real-time multiplayer
- Context: Four-person team project
- Years: 2025–2026
- Stack: React, TypeScript, Node.js, Express, Socket.IO, SQLite, Playwright
- Source: https://github.com/Benjaminnnnnn/splendor
- Web page: https://benjaminnnnnn.github.io/portfolio/splendor/

**One game board, shared by everyone in the room.**

## Key figures

- 4: engineers on the team
- 5: complementary testing layers
- Live: multiplayer state and chat

## Validate a move before sharing it.

Purchasing cards, reserving cards, and taking tokens depend on the current turn and board state. The project separates these rules from HTTP and socket handling so an action can be checked before changing the game.

## Build the application as a team.

Accounts, lobbies, chat, notifications, achievements, and an AI advisor sit around the game. React renders the client, while Express, Socket.IO, and SQLite support the server.

This case study describes the team's application. The repository credits AI assistance for the UI, art, initial infrastructure, and documentation.

## Test the rules from several directions.

The repository includes Vitest and Supertest, Playwright browser tests, fast-check property tests, and Stryker mutation testing. They check examples, generated cases, full browser flows, and whether assertions catch changed behavior.
