diff --git a/README.md b/README.md new file mode 100644 index 0000000..cf58340 --- /dev/null +++ b/README.md @@ -0,0 +1,181 @@ +# Droplet SyncSession + +Droplet SyncSession is a free and open-source model/tool that allows you to **grab sessions directly from a Trello board and import them into a Roblox UI**. +It streamlines session management for Roblox developers, making it easy to sync Trello data with in-game interfaces. + +--- + +## โœจ Features +- ๐Ÿ“ฅ **Trello Integration** โ€“ Fetch sessions directly from your Trello board. +- ๐ŸŽฎ **Roblox UI Import** โ€“ Automatically display sessions inside Roblox. +- โšก **Free & Open Source** โ€“ Available for everyone to use and contribute. +- ๐Ÿ”ง **Easy Setup** โ€“ Simple configuration with clear documentation. +- ๐Ÿ”„ **Silent Updates** โ€“ Deploy script ensures automatic updates without restarting your setup. + +--- + +## ๐Ÿ“– Documentation +For full setup and configuration details, please refer to our official documentation: +๐Ÿ‘‰ [Droplet Systems SyncSession Docs](https://droplet-systems.gitbook.io/syncsession) + +--- + +## โš™๏ธ Configuration Example + +SyncSession requires a configuration module to connect your Trello board with Roblox. +Below is a sample `Config.lua` you can adapt to your own project: + +```lua +local Players = game:GetService("Players") + +return { + Key = "", -- Your Trello API Key + Token = "", -- Your Trello Token + BoardName = "Sessions", -- Trello board name + + List = "Upcoming", -- Trello list to pull sessions from + Labels = false, -- Whether to use Trello labels + + Fields = { + { + Argument = "Host", + Image = nil, + ImageColor = Color3.new(255, 255, 255), + + GetImage = function(Value) + local Status, Identifier = pcall(function() + return Players:GetUserIdFromNameAsync(Value) + end) + + if not Status then Identifier = nil end + + if Identifier then + return string.format("rbxthumb://type=AvatarHeadShot&id=%s&w=420&h=420", Identifier) + else + return "rbxassetid://7072717759" + end + end, + + Value = "%s is hosting.", + GetValue = function(Value) + local Status, Result = pcall(function() + return Players:GetUserIdFromNameAsync(Value) + end) + + if not Status then Result = nil end + + if Result then + return Value + else + return "Unknown user" + end + end, + }, + + { + Argument = "Co-Host", + Image = nil, + ImageColor = Color3.new(255, 255, 255), + + GetImage = function(Value) + local Status, Identifier = pcall(function() + return Players:GetUserIdFromNameAsync(Value) + end) + + if not Status then Identifier = nil end + + if Identifier then + return string.format("rbxthumb://type=AvatarHeadShot&id=%s&w=420&h=420", Identifier) + else + return "rbxassetid://7072717759" + end + end, + + Value = "%s is co-hosting.", + GetValue = function(Value) + local Status, Result = pcall(function() + return Players:GetUserIdFromNameAsync(Value) + end) + + if not Status then Result = nil end + + if Result then + return Value + else + return "Unknown user" + end + end, + }, + }, + + Seperator = ": ", + Wait = 30, -- Refresh interval (seconds) +} +``` + +--- + +## ๐Ÿ“ Setup Information + +### ๐Ÿ“ฆ Deploy Script +SyncSession uses a **Deploy Script** that requires our source code. +Using the Deploy Script allows us to **silently update** the system without requiring you to restart the setup process. + +โš ๏ธ **Note:** +We do not recommend directly using the source code unless you need to make changes that arenโ€™t possible with the builtโ€‘in plugin system. +If you use the raw source code, you will **not** receive automatic updates or bug fixes. + +--- + +### ๐Ÿš€ Setup Steps +1. **Get the Deploy Model** (link provided in documentation). +2. Move the **Deploy Script** into `ServerScriptService`. +3. Create a folder named **Boards** inside `Workspace`. + - This folder should contain **Parts** (your actual boards). + - The script automatically adds an interface to them on server startup. + - Parts donโ€™t have to be basic blocks โ€” **Unions, MeshParts, etc.** will also work. +4. Recommended part size: **9 ร— 6 ร— 0.1**. + +--- + +### โš™๏ธ HttpService Requirement +Some features rely on **HttpService**. +To check if itโ€™s enabled: + +```lua +local HttpService = game:GetService("HttpService") +print(HttpService.HttpEnabled) +``` + +- If `true` is printed โ†’ HttpService is enabled โœ… +- If `false` is printed โ†’ HttpService is disabled โŒ + +Make sure you have **Output** open to see the response. + +--- + +## ๐Ÿค Credits +- **Creator**: [@Nicklaus-s](https://github.com/Nicklaus-s) +- **Contributor**: [@metricrb](https://github.com/metricrb) + +--- + +## ๐Ÿ“œ License +This project is free to use under the terms specified in the repository. Contributions are welcome! + +--- + +## ๐Ÿ’ก Contributing +We encourage community contributions! +- Fork the repo +- Create a new branch +- Submit a pull request + +--- + +## ๐Ÿ”— Community +Join our **Discord** to: +- Get support +- Stay updated on new free, openโ€‘sourced products +- Connect with other developers +