// the find
chinaboard/crino
ESP32 firmware template (chassis): WiFi + OTA + Web UI + admin auth + NTP
crino is a reusable ESP32 firmware base (WiFi provisioning, OTA, auth-gated web UI, NTP, status LED) meant to be extended via weak-symbol hooks rather than forked. It's aimed at people building small connected ESP32 gadgets who don't want to rewrite provisioning/OTA/recovery plumbing for every project.
The three-layer recovery design (IDF's OTA rollback, an NVS boot-loop counter, and a read-only factory partition the chassis can fall back to) is a genuinely useful pattern most firmware templates skip — it means a bricked ota_0/ota_1 pair is still recoverable over WiFi with zero USB access. The app-extension model via five optional weak symbols (routes, init, LED busy state, factory reset, status JSON) is a clean way to let apps build on top without forking the chassis and fighting merge conflicts on every chassis update. They've also clearly tracked their size budget (932KB/1152KB image, ~131KB free heap on C3) instead of just hoping it fits.
It's a 1-star, 0-fork repo supporting exactly two boards (C3/C6 SuperMini) — there's no evidence yet this survives contact with a board or use case the author didn't personally test. The HTTP server (auth, OTA upload, admin session) runs on plain :80 with no mention of TLS, which is a real exposure if the device ever sits on anything less trusted than a home LAN. The weak-symbol hook contract has no versioning story — if the chassis changes a hook's signature or expected behavior, apps built against the old chassis fail silently (or don't link) with no compatibility layer to catch it. Build/flash also straddles two toolchains (IDF Docker for build, host espflash for flash/monitor), which is an extra setup step compared to templates that just use idf.py end to end.