← All projects

Browser utility

BLE LED Strip Controller

Browser BLE LED strip controller — no install, no server.

  • Web Bluetooth
  • Petite-Vue
  • Tailwind CSS
  • iro.js
  • +2 more
Problem

Generic BLE LED strips often ship with closed or mobile-only vendor apps. This utility talks to compatible strips from Chromium on HTTPS with runtime protocol tuning.

Frontend work
  • Petite-Vue reactive UI with iro.js color wheel and responsive glassmorphism layout
  • Web Bluetooth pairing, GATT discovery, throttled writes, and serialized command chain
  • Pluggable protocol profiles, channel order, and debug panel with storage CRUD
  • Accessibility hooks: aria-live, aria-label, labeled inputs
Backend & system work
  • No backend — GitHub Actions CI with zero npm install static tests
  • GitHub Pages deploy publishes `src/` directly with no build step
Key decisions
  • Single HTML file with no build step for trivial static hosting and direct device control
  • Throttled and serialized BLE writes to avoid overlapping GATT operations
Challenges
  • Web Bluetooth requires HTTPS, user gesture, and Chromium — with clear unsupported-context warnings
  • Protocol fragmentation across command families, channel orders, and write modes
  • Characteristic discovery across many known service/characteristic pairs
Tech stack
Frontend
  • HTML5
  • Petite-Vue
  • Tailwind CSS (CDN)
  • iro.js
  • Font Awesome
Infrastructure
  • GitHub Pages
  • GitHub Actions
Testing
  • Node.js built-in test runner
Browser APIs
  • Web Bluetooth
  • localStorage
  • Clipboard API