Work / Sprite
Sprite
A palm-sized ESP32-S3 display, its content server and its phone app: firmware, networking, storage and mobile, proven on physical units.
What it does
The phone puts the device on Wi-Fi through a protected temporary access point. From then on the device talks to a Node server, which plans content packs to fit its flash, sends them in chunks over authenticated APIs and reads back device health. Firmware changes count as proven only when they work on flashed hardware, with a rollback build kept. A successful compile is not enough.
- The phone puts the device on Wi-Fi through a protected access point
- The device registers with its content server
- The server plans content packs that fit the device’s flash
- Packs are sent in authenticated chunks
- The device shows the content and reports its health back
How it works
Sprite spans C++ firmware built with PlatformIO, a Python build-and-flash CLI, a Node and SQLite management server, and an Expo phone app. Commissioning moved from Bluetooth to a protected Wi-Fi access point after measured coexistence failures. A resource ledger measures whether a content pack physically fits the device's filesystem. Deploy plans are labelled dry run, simulated or live, so a plan is never mistaken for a deployment. Two security faults were found and closed on real hardware: a guard that never compiled, and a token leak.
Skills shown
- Cloud, servers & networking
- Wi-Fi commissioning through a protected access point, then chunked transfers to the device over authenticated APIs.
- DevOps & CI/CD
- A Python build-and-flash CLI, GitHub Actions CI, and deploy plans labelled dry run, simulated or live.
- Security
- Found and closed a security guard that never compiled and a device-token leak, then re-verified both on hardware.
- APIs & backend
- A Node, Express and SQLite content server that plans content packs to fit the device’s flash.
- Embedded & IoT
- ESP32-S3 firmware in C++ with PlatformIO, counted as proven only on flashed hardware with a rollback build kept.
- Mobile apps
- An Expo and React Native phone app that commissions the device.
Worth knowing
- Moved commissioning from Bluetooth to a protected Wi-Fi access point after measured Bluetooth/Wi-Fi coexistence failures.
- Found a production security guard that never compiled because of build flags, and a heartbeat path that leaked a device token. Both were closed and re-verified on hardware.
- Shrank a starter content pack from about 114% of the flash filesystem to about 62% by de-duplicating identical files in a generated profile, without deleting the originals.
- Traced a suspected firewall problem to a duplicate heap check that stopped the request from ever opening a socket.
- Deploy plans say whether they are a dry run, simulated or live, so a plan is never mistaken for a deployment.