Files
languard-servers-manager/CLAUDE.md
Khoa (Revenovich) Tran Gia bbfb044b5d fix: validate per-step fields before advancing Create Server wizard
- Add STEP_FIELDS constant mapping each step to its required fields
- Extract trigger() from useForm and call it on Next click
- Only advance to next step when trigger() returns true, blocking
  silent failures where invalid data could reach the Review step
- Add CreateServerPage.test.tsx with 8 tests covering step navigation,
  validation blocking, happy path, and submit mutation
- Update CLAUDE.md: mark /servers/new Complete, remove resolved bug
- Mark implementation plan as completed
2026-04-17 13:23:21 +07:00

2.6 KiB

Languard Server Manager

Quick Start

# Backend (from backend/)
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload

# Frontend (from frontend/)
npx vite --host

Architecture

FastAPI + SQLite backend, React 19 + TypeScript + Vite frontend. See ARCHITECTURE.md for full details.

Key Rules

  • Frontend types must match API response shapes, NOT database schema columns
  • There is no REST endpoint for logs — logs are only pushed via WebSocket events
  • WebSocket onEvent callback is the mechanism for receiving real-time log entries
  • Config updates use optimistic locking (config_version) — 409 on conflict
  • Sensitive config fields are encrypted at rest with Fernet

Current Implementation Status

Backend: Fully implemented (42+ endpoints)

All routers, services, repositories, game adapter system, WebSocket, background threads, and scheduled cleanup are complete.

Frontend: Mostly implemented

Route Status Notes
/login Complete Zod + react-hook-form validation
/ Complete Dashboard with server grid
/servers/:id Complete 7-tab detail page (overview, config, players, bans, missions, mods, logs)
/servers/new Complete 4-step wizard with per-step validation via trigger()
/settings Complete Password change + admin user management

Frontend Type Mapping (API → Frontend)

API Resource Frontend Type Key Fields
Server (enriched) Server in useServers.ts game_port, current_players, max_players, cpu_percent, ram_mb
Mission Mission in useServerDetail.ts name, filename, size_bytes
Mod Mod in useServerDetail.ts name, path, size_bytes, enabled
Ban Ban in useServerDetail.ts id, server_id, guid, name, reason, banned_by, banned_at, expires_at, is_active, game_data
Player Player in useServerDetail.ts id, slot_id, name, guid, ip, ping

Test Commands

# Frontend unit tests
cd frontend && npx vitest run

# Frontend type check
cd frontend && npx tsc --noEmit

# Backend (no test suite yet)

Future Enhancements (user requested)

  • Config sub-tab redesign for user-friendliness (non-technical users)
  • "Choose mission" button that auto-selects mission for server config
  • Mission rotation management