# Configuration files

> The TOML files Shoplazza CLI reads: shoplazza.app.toml, shoplazza.extension.toml, and shoplazza.theme.toml, their environment-specific variants, and the project directory layout.

Shoplazza CLI uses TOML configuration files to manage app and extension settings.

## shoplazza.app.toml

The main app configuration file, created by `shoplazza app init`:

```toml
# Application Client ID (required)
client_id = "your-client-id"

# Partner (organization) that owns the app
partner_id = "your-partner-id"

# Application permission scopes
scopes = "read_customer write_cart_transform"

# Synced to the Partner dashboard by 'shoplazza app config push'
[dashboard]
name = "My App"
app_url = "https://example.com"
redirect_url = "https://example.com/callback"
embed = true
```

## Environment-specific configurations

You can create environment-specific config files:

```
my-app/
├── shoplazza.app.toml          # Default configuration
├── shoplazza.app.prod.toml     # Production
└── shoplazza.app.staging.toml  # Staging
```

Switch between configurations:

```shell
shoplazza app config use --config prod
```

Or target one configuration for a single run of `app dev`, `app deploy`, or `app function release`, without switching:

```shell
shoplazza app deploy --config prod
```

Link a new configuration:

```shell
shoplazza app config link --client-id your-client-id
```

## shoplazza.extension.toml

Each extension has its own configuration file:

```toml
# Extension ID (system-generated)
id = "extension-id"

# Extension name
name = "My Extension"

# Extension type (theme / checkout / function)
type = "theme"
```

## shoplazza.theme.toml

A theme project can record named environments (store, theme ID, path, ignore rules, profile) in `shoplazza.theme.toml` and target one with `-e <name>`. See [themes env](../commands/theme#env).

## CLI configuration directory

Accounts, profiles, and credentials are not stored in the project. They live in a `shoplazza-cli` folder under your OS user config directory (`~/Library/Application Support/shoplazza-cli` on macOS, `~/.config/shoplazza-cli` on Linux, `%AppData%\shoplazza-cli` on Windows): `config.json` holds accounts and profiles, and tokens are stored encrypted next to it.

## Project directory structure

A typical app project after initialization:

```
my-app/
├── shoplazza.app.toml
├── extensions/
│   ├── theme-extension/
│   │   ├── shoplazza.extension.toml
│   │   └── src/
│   ├── checkout-extension/
│   │   ├── shoplazza.extension.toml
│   │   └── src/
│   └── function-extension/
│       ├── shoplazza.extension.toml
│       └── src/
├── package.json
└── README.md
```
