2.1 KiB
2.1 KiB
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
- Empty running server triggers idle countdown and auto-stop
- Player connection cancels countdown (via
listpoll) - Usage debited to credit wallet with ledger + usage records
- Free plan grants credits on signup
- Server quota per plan enforced
- Manual E2E: start server, wait idle, verify stop + usage
Local test
pnpm db:migrate && pnpm db:seed- Register/login → dashboard shows 5000 credits (free plan)
- Create & start server → credits decrease while running
- Leave server empty → after ~10 min idle + 60s countdown → auto-stop
GET /account/usageshows RAM-GB-minute records
Free plan defaults (seed)
idleTimeoutMinutes: 10idleCountdownSeconds: 60monthlyCreditGrant: 5000maxServersPerUser: 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