Skip to content

Home

The framework for everything roblox
Made with ❤ by @ratplier

framework inspired by flamework and prvdmwrong

Boilerplate

The bare minimal example of a provider , which can listen to any lifecycle event

local artwork = require("@packages/artwork")

local provider = {}
artwork.register(provider)

Full Example

A more in-depth example of a framework usage

-- DataProvider.luau
local artwork = require("@packages/artwork")

local DataProvider = {
    registeredPlayers = {},
    data = {},
}

function DataProvider.registerPlayer(player: Player)
    if DataProvider.registeredPlayers[player.UserId] then return end

    DataProvider.data[player.UserId] = {}
    DataProvider.registeredPlayers[player.UserId] = true
end

function DataProvider.setData(player: Player, key: string, value: any)
    DataProvider.registerPlayer(player)

    local playerData = DataProvider.data[player.UserId]
    playerData[key] = value
end

return artwork.register(DataProvider)
-- CoinsProvider.luau
local artwork = require("@packages/artwork")

local CoinsProvider = {
    dataProvider = require("DataProvider")
}

function CoinsProvider.setCoins(player: Player, amount: number)
    CoinsProvider.dataProvider.setData(player, "Coins", amount)
end

return artwork.register(CoinsProvider)
-- main.server.luau
local artwork = require("@packages/artwork")

artwork.loadDescendants("@providers")
local shutdown = artwork.ignite()

game:BindToClose(shutdown)