A modernized HTML5/JavaScript multiplayer game experiment, rebuilt with a bleeding-edge tech stack.
- Modern Monorepo: npm workspaces with
@bq/client,@bq/server,@bq/shared - Real-time Multiplayer: WebSocket-based networking with
ws - Type-Safe: End-to-end TypeScript with shared types
- Docker Ready: Multi-stage Dockerfiles with docker-compose orchestration
- CI/CD: GitHub Actions for lint, test, and build
- Node.js >= 22.0.0
- npm >= 10
# Install dependencies
npm install
# Start all services in development mode
npm run dev
# Or start individually
npm run dev --workspace @bq/client
npm run dev --workspace @bq/server# Build and run all services
docker-compose up --build
# Access:
# - Client: http://localhost:8080
# - Server: ws://localhost:8000browserquest-monorepo/
โโโ apps/
โ โโโ client/ # React 19 + Vite 6 game client
โ โ โโโ src/
โ โ โ โโโ components/ # React UI (HUD, Login, Chat)
โ โ โ โโโ game/ # Canvas game engine
โ โ โโโ public/ # Static assets (sprites, audio)
โ โโโ server/ # Node.js WebSocket server
โ โโโ src/
โ โ โโโ entities/ # Game entities (Mob, Npc, Character)
โ โ โโโ WorldServer.ts
โ โ โโโ player.ts
โ โโโ test/ # Vitest tests
โโโ packages/
โ โโโ shared/ # Shared types, utils, constants
โโโ legacy/ # Original BrowserQuest code (reference)
| Layer | Technology |
|---|---|
| Client | React 19, Vite 6, TailwindCSS 4, Canvas 2D |
| Server | Node.js 22, WebSocket (ws), Pino |
| Shared | TypeScript 5.7, Zod |
| Database | Redis (via ioredis) |
| CI/CD | GitHub Actions, Docker |
| Tooling | Biome (lint/format), Vitest |
| Command | Description |
|---|---|
npm run dev |
Start all services in dev mode |
npm run build |
Build all packages |
npm run test |
Run all tests |
npm run lint |
Check code with Biome |
npm run lint:fix |
Auto-fix lint issues |
npm run format |
Format code with Biome |
# Run all tests
npm run test
# Run server tests only
npm run test --workspace @bq/serverTest Coverage:
- Unit tests for Player, WorldServer, Utils
- Integration tests for Game Loop (HELLO/WELCOME/MOVE handshake)
- Code: MPL 2.0
- Content: CC-BY-SA 3.0
Original game created by Little Workshop:
- Franck Lecollinet - @whatthefranck
- Guillaume Lecollinet - @glecollinet
Modernization by the community.