What EndCore is, what ships with it, how the resources fit together, and where to go next.
EndCore is a free, open-source framework for building apocalypse and zombie survival servers on FiveM. It gives you a working survival game out of the box: characters who get hungry, thirsty, irradiated and infected, a zombie population that hunts by sight and sound, a grid inventory, scavenged vehicles, traders, crafting, player-built bases, parties, skills and quests.
It is not a roleplay framework with zombies bolted on. Survival is part of the core, and every other resource is built around it.
Survival state lives in the core. Hunger, thirst, radiation, infection, immunity and body temperature are ticked by en-core on the server. Every resource reads and changes the same numbers. See Survival system.
One library, no third-party dependencies. EndCore ships its own library (@en-core/lib/init.lua) with callbacks, commands, keybinds, streaming helpers, UI services and interfaces for inventory, targeting, minigames, the radial menu, skills and parties. There is no ox_lib, ox_inventory or ox_target dependency. See Library overview.
One design system. Every interface uses en-ui: the same colours, type, icons, notifications, progress bars and dialogs. See Design system.
Groups instead of gangs. Players found persistent groups of survivors with ranks, and form short-lived parties for a session. See Groups and en-party.
Placed content. Admins place traders, garages, crafting benches, quest NPCs, spawn points and zombie zones in game from the en-admin Build tab, with no restart. See Content registry.
Compatibility bridges.en-core answers the main QB-Core, QBX and ESX exports, so many existing scripts keep working. See Running QB and ESX scripts.
Players and characters, survival simulation, money, jobs, groups, XP and levels, the content registry, world population control and the QB/QBX/ESX bridges. Also serves the library. See Core overview.
en-ui
The design system (CSS and JS for every interface) and the shared notifications, progress bar, prompt and input dialog. See Design system.
EndCore resources don't call each other's inventory, targeting or skill code directly. They call the library (encore.inventory.addItem, encore.target.addModel, encore.skills.getBonus and so on), and the library forwards to the resource that implements that interface. If a resource isn't running, the call falls back safely: a missing skills resource means every bonus is 0, a missing party resource means every player is a party of one.
This is why you can remove resources you don't want and the rest keep working, and why you can write your own resources against the same API. See Inventory interface and Target interface.