Skip to content

Repository files navigation

Atlantic Core logo

Atlantic Core

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.

FiveM VMP Self-host with your own branding TypeScript 5 Node.js 22 Fastify React 19 MariaDB 11 Redis 7 Turborepo Docker License

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


📸 Screenshots

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.

Character Select
Character Select · atc-core
Character Creation
Character Creation · atc-identity
In-game HUD
In-game HUD — vitals / wallet / job / rep · atc-core
Phone
Phone — contacts, messages, bank, GPS, 911 · atc-phone
Inventory
Inventory — 5×10 grid, hotbar, drag & drop · atc-core
Bank / ATM
Bank / ATM · atc-economy
Weapon Attachments
Weapon Attachments · atc-combat
Job Menu
Job Menu · atc-jobs
Property Manager
Property Manager · atc-housing
Vehicle Garage
Vehicle Garage · atc-vehicles
Marketplace
Marketplace — player-to-player trading · atc-marketplace
24/7 Store
24/7 Store · atc-example-shop
Criminal Operations
Criminal Operations · atc-criminal
Territory Control
Territory Control · atc-territory
Dispatch Terminal
Dispatch Terminal · atc-dispatch
Admin Panel
Admin Panel · atc-admin

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.


✨ Why Atlantic Core

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.


📦 What's in the box

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.


🌍 Platforms & your own branding

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.cfgno 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   # VMP

The platform is detected at runtime and can be pinned when you want it fixed:

set atc_platform "auto"   # auto | fivem | vmp

Run it under your own name

Nothing 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), not set — 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


🧱 How it fits together

   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/.


🧰 Tech stack

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

🚀 Quick start

The easy way — one command

./setup.sh          # Linux / macOS
setup.bat           # Windows — or double-click it

It 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, rebuild

Your 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.

The manual way

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 -d

2 — Install and build the monorepo:

pnpm install
pnpm build          # turbo run build
pnpm test           # turbo run test

2b — 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.


📁 Repository layout

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 and keybinds

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.


📚 Documentation


💜 Support this Project

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. 🙏

Sponsor Atlantic Core on GitHub   Support Atlantic Core on Ko-fi   Support Atlantic Core at naiemi.com

❤️ 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.


📄 License

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.


Atlantic

Atlantic Core · maintained by Naiemi Group

About

Atlantic Core Best Framework für FiveM GTA Servers

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages