Multiplayer implementation of the famous Tichu card game, which has many rule variations. This particular implementation rules are described here.
- Game Server: Node.js, Express, TypeScript
- Game Client: React.js, Vite, TypeScript
- Event-driven implementation using Socket.IO
- zod as runtime type-checker
- yarn as package manager
- yarn workspaces to share business logic and schemas between server and client
- Docker
The project uses a monorepo structure. Each subproject is defined as yarn workspace:
client: Game Client app (React) codeserver: Game Server app (Node.js) codeshared: Yarn workspace with business logic and definitions used both by client and server
- In project root folder, run
docker-compose up - This will create 2 separate containers:
tichu-ts-server, exposed on port 8080tichu-ts-client, exposed on port 3000
- In your browser, visit http://localhost:3000 to play
Initially, client and server were separate repositories:
-
Client: tichu-js
The client app started as a single-player simulation, without server. It is currently deployed on Netlify, you can check it out here. The look and feel of the UI has not changed in this project.
-
Server: tichu-ts-server
- Developed in WSL2, using Visual Studio Code & Node.js 22.11.0,
- Tested in Firefox Developer Edition ~133 & Microsoft Edge ~130
- Build & Deployment process tested using Docker v27.3.1, build ce12230 and Docker Compose v2.29.7-desktop.1