Appearance
Run locally
You need Node.js 18+ and pnpm 10.25+. npm and yarn are deliberately blocked by a preinstall check, so stick with pnpm.
First run
From the repository root:
bash
cp .env.example .env
pnpm install
pnpm devpnpm dev starts the platform apps (web, admin, API, and the rest) through Turborepo. Docs are separate — run pnpm docs:dev when you need the VitePress site on port 3003.
If you only need one surface, run it on its own:
bash
pnpm --filter web dev # player site, port 3000
pnpm --filter admin dev # admin panel, port 3001
pnpm --filter support dev # support desk, port 3002
pnpm --filter api dev # Hono API, port 8787Database
The platform expects PostgreSQL. Point DATABASE_URL at your instance in .env, then apply the schema:
bash
pnpm --filter @repo/db migrateMost migrations are generated from the Drizzle schema, but a few under packages/db/drizzle/ are hand-written SQL. If you change packages/db/src/schema, regenerate and review the diff with pnpm --filter @repo/db generate.
Signing in to the admin panel
The admin panel only lets through users with an admin session, and the seeded superadmin role bypasses every permission check. Use a seeded or manually promoted admin account for your environment. If you are exploring a specific area, the access model lists which permission each page needs.
Payments in development
Crypto deposits go through CryptoCloud and fiat through Payou. Both rely on keys in .env and on webhooks that need a publicly reachable HTTPS URL, so end-to-end payment flows usually require a tunnel (or a staging environment) rather than plain localhost. Everything else — accounts, the lobby, segments, promotions — runs fine locally.
Handy commands
bash
pnpm lint # ESLint across the workspace
pnpm check-types # TypeScript across the workspace
pnpm test # Vitest in api, admin, wallet, auth, db, shared, clickhouse, streamer
pnpm docs:dev # these docs, on port 3003
pnpm docs:build # static build of these docs