A modern, modular world platform for FiveM and VMP — by Naiemi Group.
Atlantic Core (ATC) is what you reach for when a normal roleplay framework stops being enough. It runs your server like a live game: persistent players, a real economy, jobs, vehicles, property, crime, emergency services, and a clean phone/HUD — all backed by a proper API, database, and admin panel instead of a pile of loosely glued scripts.
Open project · source-available · built to be extended.
📸 Screenshots · 🚀 Quick start · 🌍 Platforms & branding · 📁 Layout · 🎮 Plugins · 📚 Docs · 💜 Support
🌐 Setup guide in your language — click a code:
🇬🇧 EN · 🇮🇷 FA — فارسی · 🇹🇷 TR — Türkçe · 🇪🇸 ES — Español · 🇩🇪 DE — Deutsch
Captured at 1920×1080 from the live NUI. Dark anthracite (#1a1a2e) + gold
(#d4af37) design system — every panel is responsive, verified from 720p up to
4K and in portrait.
The police MDT (
atc-mdt, F9) and EMS (atc-ems, F10) panels are fully implemented; live in-game captures are on the way. See docs/screenshots/ for the full index.
Most roleplay servers are built from dozens of community resources that each keep their own state, talk to the database their own way, and break in their own way. ATC takes the opposite approach. It treats your server as one platform:
- One source of truth. Player data, money, items, vehicles, and jobs live behind a single TypeScript API with a real database (MariaDB) and a fast runtime cache (Redis). The game never trusts the client for anything that matters.
- Everything is a plugin. Identity, inventory, economy, housing, vehicles,
jobs, police, EMS, crime, the phone, the marketplace — each is a self-contained
module that talks to the core through one SDK. Turn them on and off in your
server.cfg. - A real admin panel. Manage players, sessions, bans, the economy, and server operations from a web dashboard, not from chat commands.
- Made to build on. Clear SDK, documented events, a plugin guide, and an example plugin so you can add your own gameplay without forking the core.
- Runs on FiveM and VMP, under your name. One codebase, both platforms, and every player-facing name and colour is a convar — see below.
If you run a server, ATC gives you a solid foundation. If you build for FiveM or VMP, it gives you a clean platform to build on.
For players (in-game UI): character creation, a smartphone (contacts, messages, banking, GPS, 911), an inventory with hotbar and drag-and-drop, a vitals/armor/job HUD, an emote wheel, an interaction system, garages, an ATM, a marketplace, a police MDT, an EMS panel, and more. Every interface is dark, modern, and responsive from 720p up to 4K.
For server owners: Docker setup for the API + MariaDB + Redis + nginx, a
ready server.cfg for both FiveM and VMP, a web admin panel, optional
Prometheus/Grafana monitoring, backup scripts, and an anti-cheat layer.
For developers: a typed monorepo (TurboRepo + pnpm) with 84 packages, an SDK for Lua and TypeScript, a documented event bus, domain runtime services, database migrations, a test suite, and compatibility bridges for QBCore and ESX.
Want the phase-by-phase feature status? See TODO.txt.
ATC runs on FiveM and on VMP from one codebase. VMP is a
CitizenFX fork, so it uses the same fxmanifest.lua, the same natives and the
same server.cfg — no resource in this repository needs porting. Only the
deployment plumbing differs, and both variants ship ready to copy:
cp infra/server.cfg.example server.cfg # FiveM
cp infra/server.cfg.vmp.example server.cfg # VMPThe platform is detected at runtime and can be pinned when you want it fixed:
set atc_platform "auto" # auto | fivem | vmpNothing player-facing is hard-coded. Set a few convars and the character screen, HUD, tutorial, startup banner and every kick/ban message carry your server's identity — no code edits, no fork:
setr atc_brand_name "Nova Roleplay"
setr atc_brand_short "NOVA"
setr atc_brand_logo_primary "NOVA" # the accent-coloured word
setr atc_brand_logo_secondary "ROLEPLAY" # the light word
setr atc_brand_color "#4aa3ff" # accent colour
setr atc_brand_community "Nova Community"
setr atc_brand_website "https://example.com"
setr atc_brand_discord "https://discord.gg/yourinvite"Use
setr(replicated), notset— the NUI runs on the client and only sees replicated convars. Every value defaults to today's Atlantic Core branding, so an existing server that sets none of these is completely unaffected.
Atlantic Core remains the framework, by Naiemi Group, under the LICENSE — what becomes yours is the server your players see.
📖 Full walkthrough — publishing on FiveM or VMP, in five languages: docs/hosting/PUBLISHING.md
Game Client (Lua) UI, input, rendering (NUI)
FiveM or VMP
│
ATC SDK (client) read-only client state
│
ATC Core (Lua server) game logic, event handling, security
│
ATC SDK (server) service calls
│
ATC API (TypeScript) REST API + business rules (Fastify, Node 22)
│
Redis + MariaDB runtime state + persistent data
The full design — service boundaries, event standards, security model, and the architecture decision records — lives in docs/architecture/.
| Layer | Technology |
|---|---|
| Game runtime | FiveM · VMP — any CitizenFX server, Lua 5.4 |
| API server | Node.js 22, TypeScript 5, Fastify |
| Admin panel | React 19, Tailwind 4, Vite, Zustand |
| Database | MariaDB 11 |
| Cache / runtime state | Redis 7 |
| Monorepo | TurboRepo + pnpm workspaces |
| Infra | Docker, nginx, HAProxy, Prometheus, Grafana |
./setup.sh # Linux / macOS
setup.bat # Windows — or double-click itIt asks what kind of server you are running, checks what is installed, and writes everything for you:
| It asks | It does |
|---|---|
| Game mode — Survivor (Rust), Zombie (DayZ), RolePlay, Sandbox, Custom | Sets the API mode and the matching balance preset, which have to agree |
| PvP on or off | Applies it on top of any mode — PvE Rust and PvP DayZ are both a choice, not a fork |
| Average players | Sizes the database pool, the event bus and the zombie budget, and tells you the hardware that fits |
| Platform — FiveM, VMP, standalone | Picks the right resource list and checks the shape of your licence key |
| Server name, Discord, TeamSpeak, website, domain, IP, contact | Writes them into .env and server.cfg |
| Database, ports, Redis | Tests the connection before it writes anything |
Then:
./setup.sh status # what is configured, and what is running
./setup.sh start # start the API
./setup.sh configure # change any answer later — the rest is kept
./setup.sh update # pull the newest version, migrate, rebuildYour answers live in atc-setup.json, so a later run pre-fills every question.
The API token is generated once and kept, so reconfiguring never breaks a game
server already pointed at it. Full reference:
docs/hosting/SETUP.md.
You'll need Node.js 22+, pnpm 9+, Docker, and a game server install — either FiveM (FXServer) or VMP. The steps below are identical for both; only step 3 differs, and only in which config you copy.
1 — Bring up the backend (database, cache, API):
cp infra/.env.example infra/.env # set your DB and Redis passwords
docker compose -f infra/docker-compose.yml up -d2 — Install and build the monorepo:
pnpm install
pnpm build # turbo run build
pnpm test # turbo run test2b — Set up the database. Either let the migration runner build it
(pnpm db:migrate), or — the simple QBCore/ESX-style way — import the single
schema file database/atc.sql into a fresh atc database.
Step-by-step import instructions for Windows in English, فارسی, Türkçe,
Español, and Deutsch are in database/README.md.
3 — Set up the game server — pick the config for your platform:
cp infra/server.cfg.example server.cfg # FiveM
cp infra/server.cfg.vmp.example server.cfg # VMP
# Then fill in your tokens and convars.
# Start order in server.cfg: atc-core, atc-sdk, then the plugins you want.Both files carry an identical ATC convar block — including the branding convars that put your server's name in the UI. Publishing the server publicly is covered end to end, in five languages, in docs/hosting/PUBLISHING.md.
The API runs from apps/api, and the admin panel from apps/web
(pnpm --filter @atc/web dev). New to building plugins? Start with
docs/sdk/PLUGIN_GUIDE.md.
| Path | What lives here |
|---|---|
apps/ |
api — Fastify REST API · web — React 19 admin panel |
packages/ |
84 packages — shared libs (db, events, schemas, sdk, ui, shared-types, iam, ledger, audit, locales, telemetry) plus the domain runtimes (economy, jobs, law, medical, vehicles, housing, criminal, world, transport, dispatch, …) |
plugins/ |
17 first-party gameplay plugins (see below) |
bridges/ |
Compatibility adapters — esx, qb-core |
game/ |
CitizenFX Lua resources (FiveM · VMP) — atc-core (client · server · shared · NUI ui) and atc-sdk (client · server · shared). Platform detection and branding live in atc-core/shared/platform.lua and shared/branding.lua |
infra/ |
Docker, nginx, monitoring (Prometheus/Grafana), scripts (backup/ops), plus server.cfg.example (FiveM) and server.cfg.vmp.example (VMP) |
database/ |
One-file schema (atc.sql) + multi-language import guide |
docs/ |
architecture/ (18 specs + ADRs), runbooks/, sdk/, hosting/ (publishing guide, 5 languages), screenshots/, branding/, funding.md |
tools/ |
Shared config — eslint-config, tsconfig |
Plugins live in plugins/ and depend on atc-core. The default keys below are
registered with RegisterKeyMapping, so players can rebind them in their
client's key-binding settings (FiveM or VMP).
| Plugin | What it does | Default key |
|---|---|---|
atc-identity |
Character creation & customization | on join |
atc-inventory |
Inventory, item use, crafting | F7 craft · TAB inventory* |
atc-economy |
Money, ATM, shops | F5 ATM |
atc-housing |
Property ownership, access, locks | F3 |
atc-vehicles |
Garage, spawning, impound | F1 |
atc-jobs |
Jobs, duty, payroll | F4 menu · F6 duty |
atc-combat |
Death, revive, weapon attachments | F10 attachments |
atc-territory |
Faction zone control | F2 map |
atc-dispatch |
911 calls and unit routing | — |
atc-admin |
In-game staff tools | F6 menu |
atc-phone |
Smartphone: contacts, messages, bank, GPS, 911 | NUMPAD0 |
atc-mdt |
Police mobile data terminal | F9 · F12 evidence |
atc-ems |
Medical gameplay | F10 patient |
atc-criminal |
Robberies, drugs, gangs, smuggling | G gang menu |
atc-marketplace |
Player-to-player trading | F8 |
atc-example-shop |
Reference plugin using the SDK (24/7 store) | — |
atc-plugin-healthcheck |
Runtime health & readiness checks for plugins | — |
* TAB inventory, B emote wheel, and F11 activity browser are part of the
core resource. A couple of defaults overlap (F6, F10) when many plugins run at
once — rebind one per pair in your deployment.
- docs/architecture/ — how ATC is designed (18 specs + ADRs)
- docs/runbooks/ — phase-by-phase implementation runbooks
- docs/sdk/PLUGIN_GUIDE.md — build your own plugin
- docs/sdk/API_REFERENCE.md — SDK & API reference
- docs/hosting/PUBLISHING.md — publish your server on FiveM or VMP, under your own name (EN · فارسی · Türkçe · Español · Deutsch)
- CONTRIBUTING.md — how to contribute
- THIRD_PARTY.md — third-party software & attribution
- docs/funding.md — support & sponsorship guide
Atlantic Core is an open, source-available platform built and maintained in the open by Naiemi Group. If ATC powers your server, saves you time, or you'd simply like to see it grow, please consider supporting its development. Your support goes straight into new plugins, better docs, and long-term maintenance — and every contribution, big or small, genuinely means a lot. 🙏
❤️ Become a GitHub Sponsor · ☕ Buy me a Ko-fi · 🌐 Other ways to support
The repository's Sponsor button (top of the page) is powered by .github/FUNDING.yml. More platforms — Buy Me a Coffee, Patreon, Open Collective, and PayPal — can be switched on at any time; the step-by-step guide is in docs/funding.md.
Atlantic Core is an open project by Naiemi Group, released under the Naiemi Group Open Development License — see LICENSE.
In plain terms: you can read the code, run it on your own server (commercial servers included), and modify it however you like. What you can't do is redistribute it, re-publish it, or clone it into a separate or competing product. Improvements are welcome back in the main project — see CONTRIBUTING.md.
ATC ships no GTA V game assets. Server operators are responsible for licensing any assets their deployment needs and for following the FiveM / CitizenFX Platform Agreement.