# HexaHost GameCloud — Implementation Status Last updated: 2026-06-26 ## Current phase: Phase 7 — Idle shutdown and free tier ✅ ### Phase 7 completed | Area | Status | Notes | |------|--------|-------| | `@hexahost/metering` | Done | RAM-GB-minute credits, Minecraft `list` parser | | Prisma billing models | Done | `CreditWallet`, `CreditTransaction`, `UsageRecord` | | Plan idle/quota fields | Done | Timeouts, countdown, `maxServersPerUser`, `queuePriority` | | Idle controller (worker) | Done | Player poll, countdown, auto-stop | | Usage metering (worker) | Done | 60s tick debits wallet, writes `UsageRecord` | | API billing | Done | `GET /account/wallet`, `GET /account/usage` | | API idle | Done | `GET /servers/:id/idle`, `POST .../idle/extend` | | Quotas & credits | Done | Server create/start guards | | Web | Done | Credit balance on dashboard, idle countdown on server card | ### Abnahmekriterium Phase 7 - [x] Empty running server triggers idle countdown and auto-stop - [x] Player connection cancels countdown (via `list` poll) - [x] Usage debited to credit wallet with ledger + usage records - [x] Free plan grants credits on signup - [x] Server quota per plan enforced - [ ] Manual E2E: start server, wait idle, verify stop + usage ### Local test 1. `pnpm db:migrate && pnpm db:seed` 2. Register/login → dashboard shows **5000 credits** (free plan) 3. Create & start server → credits decrease while running 4. Leave server empty → after ~10 min idle + 60s countdown → auto-stop 5. `GET /account/usage` shows RAM-GB-minute records ### Free plan defaults (seed) - `idleTimeoutMinutes`: 10 - `idleCountdownSeconds`: 60 - `monthlyCreditGrant`: 5000 - `maxServersPerUser`: 3 --- ## Phase 6 — Multi-Node and queue ✅ --- ## Phase 5 — Software & add-ons ✅ --- ## Phase 4 — Worlds & backups ✅ --- ## Phase 3 — Console, files, settings ✅ --- ## Phase 2 — Single-Node Vertical Slice ✅ --- ## Phase 1 — Authentication ✅ --- ## Phase 0 — Monorepo foundation ✅ ### Next phase: Phase 8 — DNS and join-to-start - Port pools, DNS-SRV, edge gateway, start on connect