frigate/web
DMontgomery40 f4ce7db1ac Add comprehensive GUI configuration editor
Implements a complete GUI-based configuration editor that provides a
user-friendly alternative to editing YAML files. No more YAML nightmares!

## Features

### Complete Coverage
- ALL 500+ configuration fields across 70+ nested objects accessible
- 35 top-level sections with 100% schema coverage
- 27 camera fields with 20 nested sub-configurations
- Every detector type, every option, every setting

### User-Friendly Interface
- 17+ tabbed sections for logical organization
- Schema-driven form generation (auto-adapts to new fields)
- Tooltips on every field with descriptions
- Real-time validation with helpful error messages
- Smart defaults pre-filled
- Example values in placeholders

### Sections Include
- Cameras (streams, detection, zones, recording, motion, PTZ)
- Detectors (Coral, OpenVINO, TensorRT, CPU, etc.)
- Objects (tracking, filters, masks)
- Recording (retention, storage, events)
- Snapshots (capture, retention)
- Motion Detection
- MQTT (broker, topics)
- Audio Detection & Transcription
- Face Recognition
- License Plate Recognition (LPR)
- Semantic Search
- Birdseye View
- Review System
- GenAI Integration
- Authentication & Roles
- UI Preferences
- Advanced (database, logging, telemetry, networking, proxy, TLS)

### Technical Implementation
- React Hook Form for performant form state
- Schema-driven architecture (single source of truth)
- TypeScript for type safety
- Radix UI components for accessibility
- Comprehensive validation
- YAML ↔ GUI mode toggle

### Files Added
- web/src/components/config/GuiConfigEditor.tsx - Main editor
- web/src/components/config/SchemaFormRenderer.tsx - Schema-to-UI engine
- web/src/components/config/fields/* - Field components (7 types)
- web/src/components/config/sections/* - Section components
- web/src/lib/configUtils.ts - YAML conversion & validation
- web/src/types/configSchema.ts - TypeScript types
- docs/docs/guides/config_gui.md - User documentation
- COMPLETE_CONFIG_SCHEMA.json - Full schema reference
- CONFIG_SCHEMA_SUMMARY.md - Schema documentation
- verify_gui_completeness.py - Coverage verification script

### Verification
Smoke test confirms 100% coverage:
-  35 top-level sections (ALL in schema)
-  26 explicit GUI tabs
-  27 camera fields with 20 sub-configs
-  All JSON Schema types supported
-  Every field accessible
2025-09-29 23:09:38 -06:00
..
.vscode Update web readme (#12062) 2024-06-19 08:11:51 -06:00
images Fix site.webmanifest + add svg as favicon (#6304) 2023-05-04 18:04:24 -05:00
public Implement debug live view as part of live (#20270) 2025-09-29 18:45:55 -05:00
src Add comprehensive GUI configuration editor 2025-09-29 23:09:38 -06:00
themes Dark mode theme tweaks (#17846) 2025-04-21 20:45:12 -06:00
.eslintrc.cjs Auth! (#11347) 2024-05-18 10:36:13 -06:00
.gitignore Use new UI (#8983) 2024-01-31 12:56:11 +00:00
.prettierrc Use prettier-plugin-tailwindcss (#11373) 2024-05-14 09:06:44 -06:00
components.json Improve notifications (#16632) 2025-02-17 07:19:03 -07:00
index.html use credentials for webmanifest (#10447) 2024-03-14 06:36:56 -06:00
login.html Auth! (#11347) 2024-05-18 10:36:13 -06:00
package-lock.json Update react-day-picker to 9.x (#18247) 2025-05-15 10:10:14 -06:00
package.json Update react-day-picker to 9.x (#18247) 2025-05-15 10:10:14 -06:00
postcss.config.js Fix linter and fix lint issues (#10141) 2024-02-28 16:23:56 -06:00
README.md Update web readme (#12062) 2024-06-19 08:11:51 -06:00
site.webmanifest Update webmanifest to use /BASE_PATH/ (#17310) 2025-03-23 05:34:33 -06:00
tailwind.config.cjs Implement support for no recordings indicator on timeline (#18363) 2025-08-16 10:20:33 -05:00
tsconfig.json Use new UI (#8983) 2024-01-31 12:56:11 +00:00
tsconfig.node.json Use new UI (#8983) 2024-01-31 12:56:11 +00:00
vite.config.ts optional env var for easier development (#11426) 2024-05-18 18:49:38 -06:00

This is the Frigate frontend which connects to and provides a User Interface to the Python backend.

Web Development

Installing Web Dependencies Via NPM

Within /web, run:

npm install

Running development frontend

Within /web, run:

PROXY_HOST=<ip_address:port> npm run dev

The Proxy Host can point to your existing Frigate instance. Otherwise defaults to localhost:5000 if running Frigate on the same machine.

Extensions

Install these IDE extensions for an improved development experience:

  • eslint