A desktop GUI application designed to simplify the configuration of Frigate NVR (Network Video Recorder). This is NOT just another YAML editor - it's a purpose-built tool that makes Frigate configuration accessible and intuitive for users of all technical levels.
This project is being developed with the intention of eventual adoption by the Frigate NVR organization. The goal is to provide a robust, user-friendly configuration interface that can be seamlessly incorporated into Frigate's management interface once it reaches maturity.
-
Example-Driven Configuration
- Every field includes practical examples
- Tooltips explain the purpose and impact of each setting
- Common configurations are readily available as templates
-
User-Friendly Interface
- Settings are organized by function, not by YAML structure
- Clear, descriptive labels that explain what each setting does
- Real-time validation with helpful error messages
- Visual feedback for configuration impacts
- Required fields marked with a red asterisk (*), optional fields unmarked
-
Smart Defaults
- Pre-configured with recommended settings
- Templates for common camera models
- Intelligent suggestions based on hardware capabilities
- Zone editing will be handled through Frigate's existing visual tools
- This application will focus on configuration aspects not already well-served by the main Frigate UI
- Framework: Electron (desktop application framework)
- Frontend:
- React (UI library)
- TypeScript (type-safe JavaScript)
- Vite (Build tool)
- Radix UI (Component library)
- TailwindCSS (Styling)
- Development Approach: Test Driven Development (TDD)
- Distribution: Flatpak
- Core Dependencies:
- js-yaml for YAML processing
- Vitest for testing
- Electron Builder for packaging
- ESLint + Prettier for code quality
- i18next for internationalization
-
Configuration File Management
- Create new Frigate configuration files
- Load existing configuration files
- Save and export configuration files
- Validate configuration structure
-
GUI Interface
- Intuitive form-based configuration
- Real-time validation
- Visual feedback for configuration errors
- Preview capabilities for configuration changes
-
YAML Processing
- Parse existing Frigate YAML configurations
- Generate valid YAML configurations
- Maintain formatting and comments (if possible)
- Validate against Frigate's configuration schema
- Test-Driven Development (TDD) approach
- Write tests first
- Implement features to pass tests
- Refactor while maintaining test coverage
- Continuous integration testing
- Package as Flatpak for Linux systems
- Include all dependencies
- Ensure cross-distribution compatibility
- Provide easy installation process
- Package as MSI installer (not EXE) for better system integration
- Use WiX Toolset for MSI creation because:
- Open source and well-maintained
- Industry standard for MSI creation
- Supports advanced Windows Installer features
- Provides accurate dependency tracking
- Enables proper system integration
- Supports automated deployment
- Include automated cleanup on uninstall
- Support silent installation for enterprise deployment
- Follow Windows packaging guidelines for proper system integration
- Automated build pipeline for all platforms
- Consistent versioning across distributions
- Digital signing for all packages
- Clear installation instructions
- Proper dependency bundling
- Update mechanism for each platform
The application must support the following UN official languages:
- Arabic (ar)
- Chinese (Mandarin) (zh)
- English (en) - Default
- French (fr)
- Russian (ru)
- Spanish (es)
- All user interface elements must be translatable
- Right-to-left (RTL) support for Arabic
- Language-specific formatting for:
- Numbers
- Dates
- Units (e.g., bytes, temperatures)
- Fallback to English for untranslated strings
- Dynamic language switching without application restart
- Proper font support for all character sets
- Use i18next for translation management
- Maintain separate translation files per language
- Support for pluralization rules
- Context-aware translations
- Support for HTML formatting in translations
- Automated translation status reporting
- Screen reader compatibility across all languages
- Keyboard navigation support with localized shortcuts
- High contrast mode support with translated labels
- Font size adjustments that work across all languages
- Support for additional languages beyond UN official languages
- Configuration templates
- Backup and restore functionality
- Configuration comparison tools
- Regional format preferences (dates, numbers, etc.)
frigate-config-gui/
├── src/
│ ├── main/ # Electron main process
│ ├── renderer/ # React application (renderer process)
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── pages/
│ │ └── utils/
│ └── shared/ # Code shared between main and renderer
├── tests/
├── docs/
├── flatpak/
└── electron-builder.yml
- Main Documentation: https://docs.frigate.video/
- Configuration Reference: https://docs.frigate.video/configuration/reference
- Configuration File Examples: https://docs.frigate.video/configuration/examples
- GitHub Repository: https://github.com/blakeblackshear/frigate
- Documentation Source: https://github.com/blakeblackshear/frigate/tree/dev/docs/docs
- This project references and works with Frigate NVR configurations as specified in the official Frigate documentation
- The official Frigate documentation should NOT be copied or uploaded to this repository
- Users and contributors should always refer to the official Frigate documentation at https://docs.frigate.video/
- This project aims to provide GUI tools for managing Frigate configurations while respecting the original project's documentation and licensing
- When interacting with GitHub repositories for config management:
- Implement proper rate limit handling
- Cache responses where appropriate
- Minimize API calls by batching operations
- Provide clear feedback to users when rate limits are approaching
Note: This specification will be updated as the project evolves and specific requirements for Frigate configuration files are discussed.