Everything everyone needs to build all over again has already been built.

Device Application Framework for ESP32

Quickly develop firmware that can access the full power of the ESP32, with a built-in slick reactive web interface and/or LCD touch screen. Go cloudless: build software that runs on the device or in a browser talking to it, and do things for which you thought you needed a cloud service or your own app.

What you get

  • Actually use the RTOS multi-tasking facilities. No more polling or massive loops. Will happily run ten to twenty tasks blocked at 0.0% CPU most of the time, and uses the built-in power management so the ESP32 is sleeping half the time.
  • A hierarchical storage object that synchronizes between device (cJSON) and browser (Pinia): type set net.wifi.enable=1 in the CLI and watch the toggle move on the LCD and in the web UI.
  • A modern reactive web interface skeleton ready to go, using Vue and Quasar, with settings panels and in-browser sub-windows. Your own applications only worry about their own functionality.
  • A device web server with HTTPS, WebSockets, WebRTC, an onboarding access point and authentication.
  • A powerful unix-like command line on serial, in the web interface and over SSH. Everything is modular: no pressure to include what you do not need.
  • A module to develop apps on LCD screens using LVGL. All you do is register a name, an icon, settings panels and a function that gets passed a widget to draw your main window in. An entire smartphone-like interface now shows your app in the launcher.
  • Modularity. You build a straddle: a directory containing metadata, an NPM package for your browser applications and an ESP-IDF component for your code on the device. Third-party apps can coexist without coordination.
  • A build system in a Docker container that has all the dependencies. The container can be a short-lived build environment as well as a shell system you develop from, safely compartmentalizing your AI assistant if you wish. All you need on the host is Python 3, Docker and git.
  • Layered documentation optimized for humans as well as AI assistants: contexts are up to speed instantly and context size stays manageable while handling a powerful coding universe.

Presently Spangap only supports the ESP32-S3 chip with some amount of PSRAM. Supporting the ESP32 classic as well as the C5 variant with PSRAM should not be too hard. Some things might work without PSRAM, but expect very minimal systems — like a LoRa-only Reticulous node without WiFi and TCP/IP.

See it in action today

It’s new, but there is a real thing built on it. Reticulous, a rich and functional environment for Reticulum mesh networks, was co-developed with Spangap. It serves as proof of concept, and you can study it for ideas. It demonstrates the LCD interface if you have a LilyGO T-Deck Plus.