Vue + ESP = Vuesp
Template for your arduino projects with a web interface.
ESPAsyncWebServer - Async HTTP and WebSocket Server for ESP Arduino
Vue3 - The Progressive JavaScript Framework
- π Full-stack Arduino projects with web UI
- π¨ Modern Vue 3 + TypeScript frontend
- π Optional HTTP Basic Authentication
- β‘ Binary WebSocket for efficient communication
- πΎ LittleFS file system support
- π± Responsive design with Tailwind CSS
- π Support for multiple ESP platforms (ESP32, ESP8266, Pico32)
- π οΈ Development server with hot reload
- ποΈ Automated GitHub Actions CI/CD
- ESP32
- ESP32-C3-DevKitM-1
- ESP8266
- Raspberry Pi Pico W (RP2040)
-
Clone the repository
git clone https://github.com/bondrogeen/vuesp.git cd vuesp -
Setup frontend dependencies
cd vue npm install cp .env.example .env # Edit .env to set VITE_PROXY to your device IP
-
Start development
npm run dev
-
Build and flash firmware
npm run build
See DEVELOPMENT.md for complete setup and development workflow.
- DEVELOPMENT.md - Complete development guide
- CONTRIBUTING.md - Contribution guidelines
- SECURITY.md - Security policies and best practices
vuesp/
βββ src/ # C++ firmware source
β βββ const/ # Constants and struct definitions
β βββ include/ # Header files
β βββ *.cpp # Implementation files
βββ vue/ # Vue 3 web frontend
β βββ src/ # Vue components and pages
β βββ public/ # Static assets
βββ data/ # LittleFS data
β βββ www/ # Built web UI
βββ firmware/ # Compiled firmware binaries
βββ scripts/ # Build and utility scripts
βββ platformio.ini # PlatformIO configuration
βββ vite.config.ts # Vite build configuration
cd vuesp/vue
npm installNext in .env file change proxy to your ip device
VITE_PROXY=192.168.1.100 # Change to your ESP device IPnpm run devOpen http://localhost:5173/ in your browser.
npm run dev- Start development servernpm run build-web- Build web UInpm run typecheck- Type check TypeScriptnpm run lint- Run ESLintnpm run format- Format code with Prettiernpm run check- Run all code quality checksnpm run firmware- Build and flash firmwarenpm run build- Full build (web + firmware)
See DEVELOPMENT.md for more details.
npm run buildThis will:
- Generate struct/json files from C headers
- Build and optimize Vue web UI
- Compile and upload firmware to device
This project has several security features:
- β Optional HTTP Basic Authentication
- β Binary WebSocket protocol
- β Buffer overflow protection
For production deployment, please read SECURITY.md for:
- Best practices
- Known limitations
- Recommended improvements
- Type-safe with TypeScript 5.7
- Reactive state with Pinia
- Routing with Vue Router
- UI components from vuesp-components
- Styling with Tailwind CSS
- HTTP Server - ESPAsyncWebServer
- WebSocket - Binary protocol for efficiency
- File System - LittleFS support
- Tasks - FreeRTOS task scheduling
- Configuration - EEPROM storage
Binary WebSocket messages at /esp endpoint:
- First byte: Command ID (1-255)
- Remaining bytes: Struct data
- All platform-specific
- Minor improvements to documentation
- Add comprehensive development guide
- Add CI/CD GitHub Actions workflow
- Improve frontend error handling
- Minor changes
- Migrate from Vue CLI to Vite
- Update dependencies to latest versions
- Add Tailwind CSS
- Add example project
- Minor bug fixes
Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
- Read the Security Policy
- Check existing issues
- Follow the Development Guide
This project is licensed under the MIT License - see LICENSE file for details.
- π Read documentation in DEVELOPMENT.md
- π Report bugs via GitHub Issues
- π¬ Ask questions via GitHub Discussions
- ESPAsyncWebServer - Async HTTP/WebSocket
- Vue 3 - Progressive framework
- PlatformIO - Embedded development platform
- Tailwind CSS - Utility-first CSS
- vuesp-components - Vue component library
- vuesp-struct - Struct parser and encoder
- (bondrogeen) Add GPIO
- (bondrogeen) Changed lib struct
- (bondrogeen) Add structure initialization events
- (bondrogeen) Changed project structure
- (bondrogeen) Changed web interface
- (bondrogeen) Added build scripts
- (bondrogeen) Migrate from Vue2 to Vue3
- (bondrogeen) Changed project structure
- (bondrogeen) Adding a dark theme
- (bondrogeen) add read FS
- (bondrogeen) update firmware
- (bondrogeen) init
The MIT License (MIT)
Copyright (c) 2021-2025, bondrogeen bondrogeen@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
