[Framework] Quebec - Typed Roblox Game Framework

Hey everyone,

I just dropped Quebec v4.0.0, a typed Luau game framework that I’ve been working on for some time now. Its goal is to make Roblox dev smoother, safer, and more fun.

What is Quebec?

Quebec is a simple but structured framework for Roblox games. It gives you:

  • Singleton-style Services & Controllers with lifecycle events
  • A built-in typed Networking module for clear client-server comms (no runtime type checking yet!)
  • Handy utilities for common patterns like classes
  • Central sync support for multi-place or shared code setups
  • Good Luau typings and autocomplete so you don’t have to go in blind

Why should you care?

Roblox’s default setup works, but it gets messy fast:

  • Random RemoteEvents all over the place
  • Boilerplate to manage singletons and initialization
  • No clear structure for big games

Quebec addresses these issues and fixes them by giving you:

  • One source of truth for events
  • Explicit lifecycles (:init(), :start(), etc.)
    • Modding support for custom lifecycles is coming soon!
  • Clear :client() / :server() calls for networking so you don’t mix up directions
  • Zero runtime surprises. Everything is typed

Quick Networking Example

local Networking = require(game:GetService("ReplicatedStorage").Quebec.modules.Networking)

return {
    DropItem = Networking.event("DropItem") :: Networking.Event<string, number>,
} 

… then in a service:

local Quebec = require(game:GetService("ReplicatedStorage").Quebec)
local Events = require(game:GetService("ReplicatedStorage").Events)

local Service = Quebec.singleton({
    lifecycles = { "start" }
})

function Service.start(self: typeof(Service))
    local dropItem = Events.DropItem:server() -- access the server-side handler

    dropItem:connect(function (player: Player, item: string, amount: number)
        print(`{player.Name} wants to drop {amount}x {item}`)
    end)
end

return Service

Interested?

Quebec is open-source with a documentation that’s always updated and contains a version history. You can also copy pages as Markdown and use an LLM to get answers. Thanks, GitBook!

Feedback is welcome!

I built this for myself but I’d love others to break it and tell me what’s missing. :wink:
Got ideas, issues, or improvements? Just hit me up or open an issue on GitHub. I’ll respond fast!

Thanks for reading! Happy building!

16 Likes

Thank you very much! I really appreciate it :smiley:

Ooh, this actually looks nice. Do you have a Disc*rd server for this?

1 Like

Yes, I have just created one! You can join with this code: edfQBBz9ch

I will put it into the GitHub README as well.