[Open Source] Nextinel Framework - my modular server/client setup

Hey everyone

I’ve been working on my own framework for a while and finally decided to share it. I got tired of rewriting the same stuff (networking, player data, module loading) for every new project, so I built this for myself. Maybe someone else will find it useful

It’s pretty simple. You split your code into modules with lifecycle hooks, and the framework handles the rest: dependency injection, player/character events, heartbeat updates, and network contracts

Server module hooks:

return {
    dependencies = {"ModuleName"}, -- optional
    
    init = function(dependingServices) end,
    update = function(deltaTime) end,
    
    playerAdded = function(player) end,
    playerDataLoaded = function(player, profile) end,
    playerRemoving = function(player) end,
    
    characterAdded = function(character, player) end,
    characterLoaded = function(character, humanoid, root, player) end,
    humanoidAdded = function(humanoid, player) end,
    characterRemoved = function(character, player) end,
    
    network = {
        remote = "RemoteName",
        contract = {[1] = "string", [2] = "number"}, -- optional
        onEvent = function(name, count) end,
    },
}

Client module hooks:

local remotes = {}

--[[
to call fireServer:
remotes.RemoteName:fireServer(...)
]]

return {
    dependencies = {"ModuleName"}, -- optional
    
    init = function(dependingServices) end,
    asyncInit = function() end,
    update = function(deltaTime) end,
    clientReady = function() end,
    
    characterAdded = function(character) end,
    characterLoaded = function(character, humanoid, root) end,
    humanoidAdded = function(humanoid) end,
    characterRemoved = function(character) end,
    
    network = {
        remote = "RemoteName",
        contract = {[1] = "string", [2] = "number"}, -- optional
        onEvent = function(name, count) end,
    },
    
    setupFireServer = {
        remoteNames = {"RemoteName"},
        setupRemote = function(name, network)
            remotes[name] = network
        end,
    },
}

It also has:

  • Heartbeat buckets (updates spread across 3 buckets so it doesn’t lag)
  • Network contracts (type validation for remotes)
  • ProfileStore for saving data
  • A simple version checker that warns you when there’s an update

I put full docs and installation instructions in the README. Download link is in Releases

GitHub Repo

If you find any bugs or have ideas, let me know. I’m still working on it