The plumbing every ESP32 firmware rebuilds, built once.

Device Application Framework for ESP32

Spangap is a framework for ESP32-S3 firmware. Before you write a line of your own you have real multitasking, a web interface that updates live, a command line over serial, web and SSH, and phone-style apps on a touch screen. The browser talks straight to the device, so you can build things you thought needed a cloud service or an app.

See it in action today

Reticulous, a Reticulum mesh node firmware, was developed together with Spangap and uses all of it. Flash it to see the platform working, or read its code for how things are done. On a LilyGO T-Deck Plus it shows the LCD interface too.

What you get

  • Real multitasking. No polling, no giant main loop. Ten or twenty tasks sit blocked at zero CPU until something happens, and power management lets the chip sleep in between.
  • One settings store, everywhere. Type set net.wifi.enable=1 on the command line and watch the toggle flip on the LCD and in the web UI.
  • A web interface ready to go, built on Vue and Quasar, with settings panels and windows. You add only your own app’s screens.
  • A device web server with HTTPS, WebSockets, WebRTC, an onboarding access point and authentication.
  • A unix-like command line on serial, in the web interface and over SSH.
  • Apps on LCD screens with LVGL. Register a name, an icon and a function that draws your window, and your app appears in a phone-style launcher.
  • Modules that don’t need to know about each other. Your code is a straddle: one directory with your firmware component, your browser app and some metadata. Include what you need and leave out the rest.
  • A build in a Docker container with every dependency inside. Use it just to build, or work from a shell in it, which also keeps an AI coding assistant contained. The host needs only Python 3, Docker and git.
  • Documentation written for people and for AI assistants, layered so an assistant reads only what it needs for the part it is working on.

The overview says which module owns what.

Spangap currently supports the ESP32-S3 with PSRAM. The classic ESP32 and the C5 should not be hard to add. Without PSRAM only very small systems fit, such as a LoRa-only node without WiFi.