Yarrboard Framework
YarrboardFramework is a full stack framework for building ESP32-based IoT devices with rich, real-time web interfaces. It combines an embedded web server, a controller-driven backend architecture, and a unified JSON command protocol across multiple transports. With a fully integrated HTML/CSS/JS build pipeline and WebSocket-powered UI, it enables responsive, modern device interfaces without external dependencies.
License
Mozilla Public License Version 2.0 (MPL-2.0)
All framework source code is licensed under MPL-2.0, allowing commercial use and modification while requiring derivative works to share source code. Example code is released into the Public Domain.
Features
Core Capabilities
- Web-Based Configuration: Modern single-file application with real-time updates via WebSocket
- JSON-Based Multi-Protocol: Use the same JSON commands over Websocket, HTTP, Serial, or MQTT
- Home Assistant Integration: Automatic MQTT discovery protocol implementation
- OTA Firmware Updates: Development (Arduino OTA) and production (signed esp32FOTA) support
- WiFi Management: AP/Client modes with Improv provisioning for first-boot setup
- Role-Based Authentication: Three-tier access control (NOBODY, GUEST, ADMIN)
- JSON-Based Configuration: Human-readable configuration with web editor and backup/restore
- Performance Monitoring: IntervalTimer profiling, framerate tracking, and rolling statistics
- Extensible Architecture: Modular controller system with lifecycle hooks
Protocol System
Dynamic JSON-based command protocol with:
- Runtime modification to add/remove commands
- Role-based command access control
- Support for WebSocket, HTTP API, Serial, and MQTT interfaces
- Message rate limiting and statistics
- Lambda or member function callbacks
- Context information (communication mode, user role, client ID) passed to handlers
Web Interface
- Bootstrap 5 responsive design with dark/light themes
- Real-time data updates via WebSocket
- Home/Control page for main app UI
- Status page with detailed information about device
- Settings page for device configuration (network, auth, web server, mqtt)
- System page for firmware updates, config management
- Gzip-compressed assets embedded in firmware
- SHA256 ETag-based caching