Overview
What this repo is and how the pieces fit together
This monorepo is the web presence and backend for Being Human (working title Factorio 2) — the falling-sand survival-automation game. The game itself is a separate Rust workspace (dougwithseismic/thisisbeinghuman-rust, locally ../Factorio-2); this repo handles everything around it: the landing page, wishlist, player accounts, invites, achievements, and the community plumbing (Discord, Steam). Live site: thisisbeinghuman.com.
The map
| Where | What | Port |
|---|---|---|
apps/web | Next.js landing page / site | 3000 |
apps/api | Hono backend — wishlist, auth, invites, achievements | 3001 |
apps/docs | This docs site (Fumadocs) | 3003 |
packages/shared | Zod schemas + types shared by api and web | — |
packages/ui | Shared React components | — |
packages/eslint-config, packages/typescript-config | Shared tooling config | — |
Golden rules
- Schemas live in
@repo/shared. The API validates with them, the OpenAPI docs are generated from them, and the web app imports the same types. Change the schema, everything follows. - The backend is the canonical store. Steam and Discord are mirrors/notifications, never sources of truth.
- Everything runs with zero setup. No
DATABASE_URLlocally means an embedded Postgres (PGlite). Tests run against in-memory Postgres. If you need infra to runpnpm dev, something's wrong.
Quality gates
From the repo root, all of these must pass:
pnpm turbo run build check-types lint test