> For the complete documentation index, see [llms.txt](https://docs.winga.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.winga.me/getting-started/concepts.md).

# Concepts

Winga has three core building blocks. Once these click, the rest of the product follows.

***

### Flags

A flag is a named switch your code reads at runtime. Every flag has a kebab-case **key** (e.g. `new-checkout`), a **type** (boolean, string, number, or JSON), and a per-environment value — booleans are simply on or off, while typed flags carry a value of their declared type. Your SDK reads a flag by key with `isEnabled` (for booleans) or `getValue` (for typed flags).

***

### Environments

An environment is a named slice of your project — by default `development`, `staging`, and `production`. Each flag holds an independent value in each environment, so you can turn something on in `development` while it stays off in `production`. Your SDK client is bound to one environment via the `environment` option, and it only ever reads that environment's values.

***

### Workspaces

A workspace is the top-level container for your account: projects, members, and billing all live inside it. The hierarchy is **workspace → project → flags**, so a project groups the flags for one application and a workspace groups the projects for one team. You typically have one workspace per company and one project per app.

For the exact types these concepts map to in code, see the [`@winga/js` reference](/sdks/javascript.md).
