Skip to main content

Coppermind

A robust, feature-rich data persistence library for Roblox.


โœจ Featuresโ€‹

FeatureDescription
๐Ÿ’พ Schema-BasedDefine data structure with templates and automatic reconciliation
๐Ÿ”’ Session LockingPrevent data corruption across multiple servers
โฑ๏ธ Auto-SaveConfigurable automatic saving intervals
๐Ÿ”„ MigrationsEvolve your data schema without losing player data
๐Ÿ’ฑ TransactionsAtomic operations across two stores with rollback
๐Ÿงช Mock ModeTest without hitting real DataStores
๐Ÿ“ก Event-DrivenReact to load, save, error, and unload events
๐ŸงŠ Immutable DataDeep freeze prevents accidental modifications

๐Ÿš€ Quick Exampleโ€‹

local Coppermind = require(path.to.Coppermind)

-- ๐Ÿ“‹ Define a schema
local PlayerSchema = Coppermind.registerSchema({
name = "PlayerData",
dataTemplate = {
coins = 0,
gems = 0,
inventory = {},
stats = {
level = 1,
xp = 0,
},
},
migrations = {},
})

-- ๐Ÿ“‚ Load a player's data
local store = Coppermind.loadStore(PlayerSchema, tostring(player.UserId), {
sessionLocked = true,
autoSave = 60,
})

-- โœ… Wait for data to be ready
store.onReady:Connect(function()
local data = Coppermind.getData(PlayerSchema, tostring(player.UserId))
print("Player has", data.coins, "coins")
end)

-- โœ๏ธ Update data safely
Coppermind.updateData(PlayerSchema, tostring(player.UserId), function(data)
data.coins += 100
return nil
end)

๐Ÿ“š What's Next?โ€‹

GuideDescription
Getting StartedLearn the basics and set up your first schema
SchemasDeep dive into data templates and type safety
StoresMaster store lifecycle and session locking
TransactionsImplement safe trading and transfers