Framework
The C# game framework the server itself runs on — characters, jobs, vehicles, inventory, permissions. Every front-facing string reads from one branding file, so a rename is one edit rather than four hundred.
Multi-tenant public safety platform
Nexsoft is the complete public safety stack for FiveM roleplay communities: the game framework, the member portal, a dispatch console, a mobile data terminal, records management and a working NCIC. One platform, and every community on it gets its own.
The platform
Most communities assemble this out of a dozen unrelated resources and a spreadsheet, then spend every week keeping them in step. Here the unit on the dispatch board, the officer filing the report and the record NCIC returns are the same rows in the same database.
The C# game framework the server itself runs on — characters, jobs, vehicles, inventory, permissions. Every front-facing string reads from one branding file, so a rename is one edit rather than four hundred.
Where members live between shifts. Rosters, duty status, applications, training records, discipline and department administration, all scoped by the role someone actually holds.
The dispatcher’s console. Live unit status, the call queue, self-dispatch, attach and clear — modelled on the Sundance terminals down to the field layout and the shape of the buttons.
The terminal in the car. Current call, call list, queries and report filing from the driver’s seat, without leaving the world to go and find a browser tab.
Arrests, citations, warnings, incident reports, crash reports, tow reports. Ten forms, versioned and searchable, attached to the people and vehicles they concern rather than to a channel in Discord.
A working replica of OpenFox Messenger. Warrants and BOLOs entered with real message keys — QW, EW, QV, XW — and responses arriving in a mailbox, the way they do in a comms centre.
Tenancy
Not by policy — by shape. Most multi-tenant systems put a where clause between customers and trust every query to remember it. Nexsoft puts the tenant in the key. Every foreign key carries the community alongside the row, so a record in one community is incapable of referencing a record in another. The database refuses it before a single policy is consulted.
-- an arrest may only reference a character
-- belonging to the same community
alter table arrests
add constraint arrests_character_fkey
foreign key (community_id, character_id)
references characters (community_id, character_id);
-- so this is not a policy decision.
-- it is a type error.
insert into arrests (community_id, character_id)
values (2, 41);
ERROR: insert or update on table "arrests"
violates foreign key constraint
"arrests_character_fkey"{
"publicName": "Summit RP",
"shortName": "SummitRP",
"tag": "SRP",
"website": "https://summitrp.gg",
"discord": "https://discord.gg/summit",
"syncFromPortal": true
}The game server
The framework came out of a decade-old codebase with one community’s name compiled into hundreds of files — menu titles, webhooks, namespaces, embed footers. Every front-facing string now reads from a single config, published to every resource as a replicated convar the moment the server starts.
syncFromPortal and branding follows the tenant record, no file edit and no restart.Nexsoft is in private development with its first tenant running in production. If you operate a serious roleplay community and want in early, say hello.