Case study
GameHub
Web platform for a Space Engineers server (mid-2024 – Mar 2026); under renovation
Public repos for the SE server web stack: Steam/JWT API, wiki, items, hangar grids, blocks, and admin surfaces—paired with C# plugins in the Space Engineers tooling case study.
Key metrics
- HTTP endpoints (Nest)
- 151
- Frontend routes / pages
- 25
- Nest module files
- 21
- TypeORM entity files
- 28
- SE-domain endpoints
- 37
- Valheim-domain endpoints
- 70
GameHub was the web layer for a Space Engineers game server operated mid-2024 – Mar 2026 (game server now stopped). The public API and Next.js app remain as source evidence; the site at se.snowmuffingame.com is under renovation (coming-soon). C# server plugins from that same period are covered in the Space Engineers tooling case study.
Problem
Expose player- and admin-facing HTTP/UI for an SE server: catalog and inventory-style item APIs, wiki content, hangar grid metadata (Postgres + S3 blueprints per hangar README), block definitions, server health, and Steam-authenticated sessions. Module and route names under Space_Engineers and gamehub-next (wiki, mgmt space-engineers admin, calculators) define that product surface.
Constraints
- Two public repositories (API + web), not a monorepo.
- PostgreSQL via TypeORM; space_engineers schema created in migrations/init-schemas.
- Steam login via Passport, then JWT for subsequent API access (auth module).
- Same Nest process also hosts a larger Valheim controller surface (70 of 151 endpoints)—visible in src/Valheim.
Architecture
- Backend: NestJS modules (21 *.module.ts files) and 21 controllers; HTTP verbs counted to 151 handlers.
- SE domain folder: blocks, damage-logs, hangar, icons, item, servers, wiki under src/Space_Engineers/ (37 endpoints).
- Frontend: Next.js App Router (25 page files on origin/main) calling paths such as /space-engineers/wiki/* and /space-engineers/item/* (shared/api/wiki.ts, items.ts).
- Hangar: stores grid/blueprint metadata in Postgres and files in S3 (Space_Engineers/hangar/README.md).
- SE_Grid_Manager (plugin) documents its own Torch HTTP listener for external tools; no hard-coded api.snowmuffingame.com reference found in that plugin tree during this audit.
Scale (verifiable at HEAD)
- 151 Nest HTTP endpoint decorators across *.controller.ts (Get 85, Post 33, Put 18, Delete 12, Patch 2, Options 1).
- Endpoint folders: Valheim 70, Space_Engineers 37, admin 12, game 8, wallet 8, server 7, auth 4, user 3, app 2.
- 28 TypeORM entity files (13 under entities/space_engineers, 6 under entities/valheim).
- 25 App Router page.tsx files on gamehub-next origin/main.
Key decisions (from structure)
- Split transport (controllers) and domain folders per game vertical (Space_Engineers vs Valheim).
- Steam OAuth entry + JWT for API guards.
- Dedicated DB schema name space_engineers for SE tables.
- NestJS + TypeORM + PostgreSQL; Space_Engineers and Valheim modules.
- Steam/JWT auth module; 151 HTTP handlers at HEAD of local checkout used for counts.
- Next.js UI for wiki, SE admin, calculators, and related dashboards.
- Calls /space-engineers/* API routes from shared/api.
Decisions
- API and web live in two public repos: game_hub_nest and gamehub-next.
- Auth stack in code: Passport Steam strategy + JWT (auth/steam.strategy.ts, jwt-auth.guard.ts).
- Persistence: TypeORM with a dedicated PostgreSQL schema space_engineers (and a separate valheim schema).
- Space Engineers HTTP surface is grouped under src/Space_Engineers/ (blocks, damage-logs, hangar, icons, item, servers, wiki).