Custom Admin Panel Architecture

Headless

Headless server-authoritative administration architecture, client SDK, and custom UI design freedom.

# Headless & Decoupled by Design

R Anti-Cheat adopts a Headless Architecture for in-game moderation and administration.

Instead of forcing an inflexible, opinionated pre-baked GUI that clashes with your game's visual design, font choices, or screen layout, RAC separates the server-authoritative moderation engine from the client presentation layer:

┌────────────────────────────────────────────────────────────────────────┐
│                        SERVER: RAC AdminServer                         │
│  - Authoritative RBAC validation (UserId verification)                 │
│  - Telemetry collation & live threat scoring                           │
│  - Direct access to PunishmentManager & DetectionEngine                │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ Remotes: RAC_AdminRequest & RAC_AdminEvent
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│               CLIENT SDK: ReplicatedStorage.RAC.ClientAPI               │
│  - Typed Luau wrapper for all admin RPCs & live events                 │
│  - Real-time event hooks (OnDetection, OnWarning)                      │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ Developer Hooks
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│                     DEVELOPER'S CUSTOM ADMIN GUI                       │
│  Choose any UI framework that matches your game:                       │
│    • Native Roblox ScreenGui (Frames, TextLabels, ImageButtons)        │
│    • Roact / React-lua / Roact-Rodux                                   │
│    • Fusion / Iris ImGui / Custom Canvas                               │
│    • In-Game Chat Commands (/warn, /kick, /ban, /freeze)               │
└────────────────────────────────────────────────────────────────────────┘

# Why Decoupled Admin Panels are Superior

  1. Brand & Art Direction Matching: Your admin interface can match your game's exact UI theme (cyberpunk, fantasy, minimalist, cartoon, or sci-fi).
  2. Zero Bloat in Game Client: Regular players never download heavy UI components or assets they don't have permission to see.
  3. Framework Freedom: Use vanilla Roblox instances, modern reactive UI libraries (Fusion, Roact, React-lua), or custom mobile-optimized interfaces.
  4. Uncompromised Security: Regardless of what your UI looks like, every single action is verified on the server by PermissionManager before execution. Exploiters cannot spoof admin privileges by modifying client UI code.

# Client API Overview

RAC provides an official client-side SDK located at:

game.ReplicatedStorage.RAC.ClientAPI

Developers can require this module in any client LocalScript to query live telemetry, inspect active player risks, listen to detection events, and execute punishments with simple, typed Luau calls:

local RACClient = require(game.ReplicatedStorage.RAC.ClientAPI)

-- 1. Fetch live system overview
local success, stats, userRole = RACClient.GetOverviewData()
print(string.format("Logged in as %s. Total players monitored: %d", userRole, stats.totalMonitored))

-- 2. Fetch active players and their threat scores
local ok, players = RACClient.GetLivePlayers()
for _, p in ipairs(players) do
    print(string.format("[%s] Risk: %d | Ping: %dms", p.username, p.riskScore, p.ping))
end

-- 3. Moderate an exploiter
RACClient.PunishPlayer("Kick", 12345678, "SpeedExploiter99", "Speed Hack Anomaly")

# Next Steps