Files
HexaHost-GameCloud/docs/IMPLEMENTATION_STATUS.md
smueller 9b061c3ee7
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 9s
CI / Go — edge-gateway build (push) Successful in 13s
Phase3
2026-06-26 12:17:26 +02:00

3.4 KiB

HexaHost GameCloud — Implementation Status

Last updated: 2026-06-26

Current phase: Phase 3 — Console, files, settings

Phase 3 completed

Area Status Notes
Go agent v0.3 Done Log stream, RCON commands, safe file I/O
@hexahost/contracts phase 3 Done console, files, properties, players
API NodeBridge Done Sync request/response over Redis
API Console Done Token + WS /api/v1/servers/:id/console/ws
API Files Done List, read, write with path validation
API Properties Done GET/PATCH server.properties
API Players Done Online list + whitelist
API Restart Done POST /servers/:id/restart?skip=true
Audit events Done console.command, file.write, properties.update
Web server tabs Done Console, files, properties, players
Unit tests Done Properties parser, path validation, route contracts

Abnahmekriterium Phase 3

  • Live console WebSocket (logs + commands when RUNNING)
  • File manager (list/read/write, path sandbox)
  • server.properties editor with restart option
  • Player list + whitelist view
  • Server management fully via web panel (no direct host access required)
  • Manual E2E validation (requires Docker + agent running locally)

Local vertical slice

pnpm dev:infra
pnpm db:migrate   # or db:push
pnpm db:seed
pnpm dev

# Terminal 2 — Node Agent (requires Go + Docker)
cd apps/node-agent
set NODE_ID=00000000-0000-4000-8000-000000000001
set NODE_TOKEN=local-dev-enrollment-token-change-me-32chars
set NODE_AGENT_PUBLIC_URL=ws://localhost:3001/api/v1/nodes/ws
make run
  1. Create and start a server under /servers/new
  2. Open Console tab — live logs, send commands via RCON
  3. Open Files — browse server directory, edit files
  4. Open Properties — change server.properties, optional restart
  5. Open Players — online players and whitelist

Known limitations

  • Console only when server status is RUNNING; files readable when RUNNING or STOPPED.
  • RCON via rcon-cli inside Minecraft container (itzg image).
  • File writes limited to server data directory; no upload/download archives yet (Phase 4).
  • Player management read-only (whitelist view); add/remove deferred.
  • Single-node only; no scheduler fairness yet.

Phase 2 — Single-Node Vertical Slice

Area Status Notes
Prisma lifecycle models Done Allocations, server fields, node enrollment
@hexahost/contracts servers Done Zod schemas for create/list/action
API ServersModule Done CRUD, start/stop, BullMQ jobs
API NodesModule Done WebSocket /api/v1/nodes/ws, Redis command bridge
Worker provisioning Done Port allocation, Redis commands, response wait
Go node-agent v0.2 Done WebSocket, Docker (itzg/minecraft-server:java21)
Web server UI Done Create, list, detail, start/stop
Migration Done 20260626140000_phase2_game_servers

Phase 1 — Authentication

Session cookies, register/login/logout, email verify, password reset, TOTP 2FA, recovery codes, audit baseline. See docs/adr/0002-session-authentication.md.


Phase 0 — Monorepo foundation

pnpm + Turborepo monorepo, PostgreSQL/Redis/MinIO/Mailpit compose, CI, ADRs.

Next phase: Phase 4 — Worlds & backups

  • S3-compatible storage (MinIO)
  • World upload/download
  • Backup jobs and restore