# FeatherPanel admin settings & configuration

This documents every setting exposed by `SettingsController` (Admin → Settings) and every `ConfigInterface` key.

## How settings work

- Stored in DB table `featherpanel_settings` as name/value strings.
- Keys are defined in `backend/app/Config/ConfigInterface.php`.
- Admin UI metadata (type, options, category, validation) lives in `SettingsController`.
- Public/read APIs never return sensitive values (secrets are redacted).

## How to change settings

### Admin UI

Open `/admin/settings` (or Admin → Settings). Categories:

- **App** (`app`) — Some default settings for the application (32 keys)
- **Links** (`links`) — Public links shown across the panel footer (support, social media, legal) (12 keys)
- **Auth Page** (`auth_page`) — Customize the login and register experience, marketing panel, QR sign-in, and method layout (18 keys)
- **Telemetry** (`telemetry`) — Enable or disable installation reports, browser analytics, heatmaps, and session recordings to FeatherPanel. (1 keys)
- **Security** (`security`) — Security and authentication settings (46 keys)
- **Email** (`email`) — Email configuration settings (7 keys)
- **Status Page** (`status_page`) — User-facing status page configuration (10 keys)
- **Knowledgebase** (`knowledgebase`) — Knowledgebase and documentation settings (6 keys)
- **OAuth** (`oauth`) — Discord OAuth configuration. For OIDC/SSO use Admin → OIDC / SSO Providers. (3 keys)
- **Servers** (`servers`) — Servers configuration settings (27 keys)
- **Chatbot** (`chatbot`) — AI chatbot configuration settings (21 keys)
- **Ticket System** (`ticket_system`) — Ticket system configuration settings (3 keys)
- **SEO** (`seo`) — Search Engine Optimization settings (4 keys)
- **PWA** (`pwa`) — Progressive Web App settings (5 keys)
- **Other** (`other`) — Other configuration settings (4 keys)

### HTTP API

```http
GET  /api/admin/settings
GET  /api/admin/settings/categories
GET  /api/admin/settings/category/{category}
GET  /api/admin/settings/{setting}
PATCH /api/admin/settings   # JSON body: { "app_name": "My Panel", ... }
```

Requires `admin.settings.view` / `admin.settings.edit` (or `admin.root`).

### CLI (production)

```bash
featherpanel settings                 # interactive editor
featherpanel saas listsettings
featherpanel saas getsetting app_name
featherpanel saas setsetting app_name "My Panel"
```

See [../cli/usage.md](../cli/usage.md).

## Boolean values

DB/API/CLI use string `'true'` / `'false'` (not JSON booleans).

## Totals

- ConfigInterface keys: **258**
- Admin-editable settings with UI metadata: **199**
- Categories: **15**

## Full machine-readable dumps

- [all.json](./all.json) — settings + categories + constants
- [categories.json](./categories.json)
- [constants.json](./constants.json)
