- Replace apps/game (TypeScript/Vite/R3F) with a Bevy 0.16 Rust client featuring main menu, star map, and flight states - Add services/auth: Express + better-auth server with SpacetimeDB token exchange endpoint - Delete archive/legacy-static/ (old JS demos, CSS, assets) - Update docs pages (architecture, gameplay, roadmap, social, overview) to reflect Bevy pivot - Clean up workspace config: remove apps/game from pnpm workspace, update dev scripts, tsconfig, and AGENTS.md files - Add .vscode/settings.json for Rust tooling
1.7 KiB
1.7 KiB
VOID::NAV — Monorepo Root
Single-player 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