A satirical arcade browser game. Clock in, pick warehouse orders against the clock, survive escalating manager rage, and try not to get fired.
Play now → sigmawarehousegame.web.app
SIGMA WAREHOUSE is a timed order-picking game with combo scoring, boss interruptions, and 70/30 weighted chaos. Success feels earned; failure feels like a bit. Built for former and current warehouse workers and anyone who finds corporate labor culture darkly funny.
Screen flow: Character Create → Welcome cutscene → Station Hub → OSR Gameplay → Results / Fired
| Layer | Tech |
|---|---|
| UI | React 19, Vite 8, Framer Motion 12, Tailwind CSS 4 |
| State | Zustand 5 |
| Audio | Web Audio API (procedural SFX) |
| AI Dialogue | Anthropic Claude Haiku (via server-side proxy) |
| Hosting | Firebase Hosting |
| Backend | Firebase Cloud Functions (Node 22) |
| Tests | Vitest 4, @vitest/coverage-v8, Playwright |
# Install dependencies
npm install
# Start dev server (localhost:5173)
npm run dev
# Run tests
npm test
# Run browser E2E smoke tests
npm run test:e2e
# Run tests with coverage
npm run coverage
# Production build
npm run buildThe client requires no secrets. The Anthropic API key was moved server-side (ARN-5) and never ships in the browser bundle.
For the local Firebase Functions emulator only, create functions/.secret.local:
ANTHROPIC_API_KEY=sk-ant-...
See .env.example for full documentation. The live key is stored in Firebase Secret Manager — never in any .env file committed to the repo.
npm run build also scans the generated client bundle for likely secret references and fails if one appears in dist/.
The app deploys to Firebase Hosting with a Cloud Function proxy for AI dialogue.
Hosting is deployed automatically. Every push to main that passes CI is published to Firebase Hosting by the deploy job in .github/workflows/ci.yml (via FirebaseExtended/action-hosting-deploy), typically live within ~2 minutes — no manual step needed. This requires the repo secret FIREBASE_SERVICE_ACCOUNT_SIGMAWAREHOUSEGAME (a Firebase Hosting Admin service-account key). Cloud Functions are not part of the auto-deploy and are still released manually.
Manual deploys (Functions, or hosting outside CI):
# Deploy everything (hosting + functions)
firebase deploy
# Hosting only
firebase deploy --only hosting
# Functions only
firebase deploy --only functionsLive site: https://sigmawarehousegame.web.app
To store or rotate the Anthropic key in Secret Manager:
firebase functions:secrets:set ANTHROPIC_API_KEYPRODUCT.md— game concept, brand voice, and product goalsDESIGN.md— visual direction, tokens, and component guidelinesARCHITECTURE.md— screen flow, state, persistence, OSR, testing, and multiplayer scopeCONTRIBUTING.md— local setup, checks, PR expectations, and contributor rulesSECURITY.md— client/server config boundaries, secret storage, and bundle-secret scanningAGENTS.md/CLAUDE.md— coding-agent instructions
npm run lint # ESLint
npm test # Vitest (single run)
npm run test:e2e # Playwright critical-flow smoke tests
npm run test:watch # Vitest watch mode
npm run coverage # Coverage report (threshold: 80% on osrEngine.js)
npm run check:client-secrets # Scan dist/ for leaked client secretsIssues and roadmap tracked in Linear.