# Introduction

First of all, **thank you** for checking out my framework. I really appreciate that :smile:. I put a lot of work into this framework by exploring all sorts of different design patterns, possibilities of utility functions and performance improvements. Enough talking, let's get started!

## What is Quebec?

Quebec is a **modular Roblox game framework** developed for **vanilla Luau**. It's entirely written in pure Luau and therefore 100% compatible with Roblox. The goal of Quebec is to create a **seamless developer experience**, because developing Roblox games can quickly become a mess, especially for bigger games.&#x20;

To achieve this, Quebec uses **services and controllers**. These are called **"singletons"** in Quebec, because they are only instantiated once, and never multiple times. A singleton is essentially a place where your game logic lives.

Normally, a singleton has one specific field or task to avoid clutter and improve organization. The best example for this is: `DataService, MonetizationService & JoinService` , where each service has it's own purpose.

## What are the benefits?

Quebec provides the developer with a **lot of benefits**. Some notable ones are:

* Organized and well-structured codebase
* Built-in utility functions and modules
* Little to no performance loss
* Lifecycle events to act upon game events seamlessly
* Opt-in architecture: **You only use, what you need**
* Load order: A singleton will only start, once it's dependencies have already started
* ... and more

### I am still not convinced

If you are uncertain if you need Quebec, **just try it out**. You can always revert back! And also, we accept new contributors on our GitHub :wink:


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://baxoplenty.gitbook.io/quebec-docs/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
