# VOID::NAV — Monorepo Root Open-world space exploration RPG. Windward Horizon in space with FTL-style combat. ## Directory Map | Path | Purpose | |------|---------| | `apps/docs` | Living design docs, interactive demos, and vertical-slice prototype | | `apps/game` | Playable game shell connected to SpacetimeDB | | `apps/site` | Public landing page | | `packages/ui` | Shared UI primitives and design tokens | | `services/spacetimedb` | SpacetimeDB TypeScript backend module | | `scripts/` | Dev tooling (dev.sh startup script) | | `archive/` | Legacy pre-monorepo files kept for reference | | `src/module_bindings/` | Empty; generated bindings go to `apps/game/src/module_bindings` | ## Key Files - `package.json` — pnpm workspace scripts (`dev`, `build`, `check`, `generate:bindings`) - `pnpm-workspace.yaml` — workspace glob patterns - `spacetime.json` — SpacetimeDB module path and binding generation config - `tsconfig.base.json` — Shared TypeScript config (ES2020, React JSX) ## Commands ```bash pnpm dev # Full stack: SpacetimeDB + game (port 5175) pnpm dev:docs # Docs only (port 5173) pnpm dev:site # Site only (port 5174) pnpm dev:game # Game frontend only (requires running SpacetimeDB) pnpm build # Build all apps pnpm check # Typecheck all packages pnpm generate:bindings # Regenerate SpacetimeDB TypeScript bindings ``` ## Conventions - SpacetimeDB is the persistence layer from day 1 — no localStorage for game state - All UI uses Tailwind CSS v4 with custom design tokens from `packages/ui` - 3D rendering uses React Three Fiber + Drei + Three.js - Module bindings are auto-generated — never edit `module_bindings/` by hand