This is the RankGun application centre which is designed to interact with the RankGun API, made using roblox-ts and react-lua.
The RankGun application centre allows people to complete questions in exchange for a role in your group.
Please keep in mind this software is available for everyone under the RankGun PolyForm Shield License.
The centre itself is a self-contained ModuleScript, compiled with roblox-ts and loaded with a Script like as below:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local AssetService = game:GetService("AssetService")
local moduleModel = AssetService:LoadAssetAsync(117860497552510)
moduleModel.Sandboxed = false
local moduleInstance = moduleModel:FindFirstChild("MainModule")
moduleInstance.Name = "rankgun-ranking-centre"
moduleInstance.Parent = ReplicatedStorage
local RankgunModule = require(moduleInstance)
RankgunModule.Init({
workspaceId = "<workspace-id>",
apiToken = "<api-token>",
-- verbose = true, -- optional; logs API requests/responses to the server console for debugging
})
Tip
As a RankGun customer, use the loader scripts available for download in your Workspace, which will pre-fill the necessary details and automatically update.
Before using, you must enable a few Experience Settings - namely, Security -> Allow HTTP Requests and Allow Loading Third Party Assets. Be sure to enable "enable studio access to api services" for cooldown logic if you wish to develop on studio.
So that RankGun can support self-hosted centres, the centre reports lightweight, aggregate
operational telemetry to RankGun's API (/api/telemetry) using the same API key it already
uses for ranking. This lets RankGun see whether a centre is online, what build it's running,
how applications are converting, and where API calls are failing.
It sends only instance-level facts (centre version, place/universe/server id, environment,
current player count, uptime) and a small set of events: centre_boot, heartbeat,
forms_loaded, application_started, application_submitted, rank_result, and
api_error (HTTP status + short error code only).
No end-user data is ever collected — no UserIds, usernames, question text, submitted
answers, or raw error bodies. All requests are best-effort and run on a background thread, so
telemetry never affects gameplay. See src/server/telemetry.ts.
The client's GUI is rendered with react-lua components; it replicates using a LocalScript parented to the PlayerGui. We use Remo for remote declaration and to allow for full types.
To build the module, run npm run build after ensuring all dependencies are installed.
TBC
All contributions are highly appreciated and mean a lot to us! Feel free to open them and we'll try to get back to you as fast as we can.
Issues may be opened to report issues with the application centre, NOT for customer support.
Github workflow automatically builds and pushes to roblox & uploads to releases. Relevant model.