- Add MiniStarMap, NpcMarketPanel, ShipStatusPanel, useKeyboardShortcuts - Add progress bars for approach/mining operations and cargo fill indicator - Rewrite docs from spreadsheet-first to exploration-first open-world RPG - Replace dev:db + dev:standalone with unified dev script (scripts/dev.sh) - Add Vite chunk splitting for three.js and spacetimedb - Fix displayName dependency in useSpacetimeConnection - Remove stale usePlayerSession.ts - Add AGENTS.md files across all packages
1.7 KiB
1.7 KiB
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 patternsspacetime.json— SpacetimeDB module path and binding generation configtsconfig.base.json— Shared TypeScript config (ES2020, React JSX)
Commands
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