Open Party Lab is a local-first browser party-game environment built as an experiment in AI-assisted software development. The project exists because it is interesting to see how far human direction plus coding agents can take a multiplayer game platform.
The current public release is a clean source cut intended for GitHub collaboration. It does not include old Git history, local temp folders, build outputs, artifacts, unpublished ideas, or private and hidden game prototypes.
Open Party Lab runs three applications together:
apps/server: authoritative Socket.IO room, round, score, and game-state serverapps/host: Phaser host screen for a TV, monitor, or shared computerapps/controller: React phone controller used by players in the browser
Shared code lives in npm workspace packages:
packages/protocol: Socket events, DTOs, and game-specific payload typespackages/game-core: game manifests, shared game types, round helpers, and catalog datapackages/ui-kit: shared visual tokenspackages/utils: small shared utilities
This is intentionally published as a monorepo. The host, controller, server, and shared protocol change together, and splitting them into separate repositories would make game work harder rather than clearer.
This is a playable local prototype, not a hosted production service. It is designed for devices on the same LAN.
All included games are alpha versions. Rules, pacing, scoring, content, UI, and especially balancing are expected to change. Playtesting notes, balance proposals, and small polish improvements are very welcome.
Implemented platform features:
- room creation with room code, join URL, and QR overlay
- phone join flow
- reconnect support through device/session tokens
- shared round lifecycle across games
- scoreboards and post-round flow
- host controls for language, FPS, and player removal outside active rounds
- typed protocol shared by server, host, and controller
Public game catalog in this source cut:
- Drift Racer
- Chaos-Kommando
- Draw & Guess
- Schaetzorama
- Word Tiles
- Arena Survivor
- MinionsTD
- Imposter
- Tabu
- Pantomime
- Tap Race
- Air Hockey
- Light Trails
Not included in this public cut:
- private or hidden game prototypes that were not approved for public release
- removed experimental prototypes
- legacy experiment folders
Temp/,artifacts/,node_modules/,dist/, logs, and local editor state
Requirements:
- Node.js 20+
- npm 10+
From a fresh clone:
npm ci
npm run buildRun locally on Windows:
npm run dev:allRun locally on any platform with three terminals:
npm run dev:server
npm run dev:host
npm run dev:controllerDefault ports:
- Server:
http://localhost:3000 - Host:
http://localhost:5173 - Controller:
http://localhost:5174
Useful scripts:
npm run dev:allnpm run dev:stopnpm run dev:servernpm run dev:hostnpm run dev:controllernpm run typechecknpm run build
Phones must be able to reach the server and controller app through the host machine's LAN IP.
Example PowerShell setup:
$env:PUBLIC_CONTROLLER_ORIGIN="http://192.168.178.20:5174"
$env:VITE_SERVER_URL="http://192.168.178.20:3000"Then start the platform with npm run dev:all on Windows, or start the server, host, and controller scripts in separate terminals. Open the host app on the shared screen, and scan the QR code from each phone.
Use a Chromium-based browser or Safari for phone controllers when possible. Firefox can work, but controller sessions may sometimes have issues with fullscreen behavior, reconnect/session handling, or touch input timing.
The host screen is intended for a desktop browser. The controller is intended for phone-sized browser windows on the same network as the server.
Developers and AI coding agents are welcome to improve the project. Good contributions are usually vertical: update the server logic, protocol types, host view, controller model, and docs together. Balancing and usability improvements are especially useful while the games are still in alpha.
Start with:
Contributions are voluntary and unpaid. The maintainer may publish official builds, including a possible Steam release, to reach a larger player base. See CONTRIBUTING.md and NOTICE.md.
Code is licensed under the Apache License 2.0. See LICENSE.
Assets, names, generated media, third-party references, and store distribution rights need separate care. See NOTICE.md. This repository is not legal advice; get proper legal review before commercial distribution.