All case studies

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.

NestJSNext.jsTypeScriptPostgreSQLSteam auth

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.
API / backend
game_hub_nest
  • NestJS + TypeORM + PostgreSQL; Space_Engineers and Valheim modules.
  • Steam/JWT auth module; 151 HTTP handlers at HEAD of local checkout used for counts.
Web / frontend
gamehub-next
  • 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).