An open-source project turns an ESP32-based e-paper device into a shared shopping list that family members can update from their phones, while keeping the list available offline.

A small e-paper screen on the fridge can serve as a shared household shopping list, with family members adding items from their phones. An open-source project uses an ESP32-based M5Stack PaperMono, with no custom PCB or soldering required.
Developer Seamus Cawley has published the PaperMono Shopping List firmware and companion server on GitHub. The project turns the pocket-sized e-paper touchscreen into a dedicated shopping-list display that synchronises with a phone web app. Cawley describes it as a personal project running on one device at home rather than a commercial product.
The finished setup groups items by the order in which a user walks through a shop. Items can be ticked off directly on the touchscreen, while the on-screen keyboard suggests previously added products. Other household members can add items through a phone browser.
The hardware
The M5Stack PaperMono C153 is built around an ESP32-S3R8 with 16MB flash and 8MB PSRAM. It has a 3.97-inch, 480×800 four-level grayscale e-paper touchscreen, a 1,150mAh battery and 2.4GHz Wi-Fi. The board also includes NFC, LoRa, a microSD slot, RTC, IMU, microphone and frontlight.
M5Stack lists the PaperMono at US$65, while The Pi Hut lists it at £70.80 including VAT. Both listings are currently out of stock.
The project also needs a computer that remains available at home to run the server. The developer’s documentation supports deployment on a conventional computer and provides options including systemd and Docker.
How it works
The system has three parts: a FastAPI server with an SQLite database, a phone web interface and the PaperMono firmware. The server is the single source of truth, with both the phone and PaperMono communicating with it over HTTP rather than communicating directly with each other.
The PaperMono keeps a complete local copy of the shopping list in flash. Instead of exchanging individual changes, it uploads queued offline edits and then downloads the latest complete list. The developer says the payload is only a few kilobytes for a typical household list, making full replacement simpler and more reliable after long offline periods.
Wi-Fi is enabled only when needed. The device synchronises at boot, every hour, after an edit and when the screen is tapped if the last successful sync is more than five minutes old. Changes made offline are queued in flash and uploaded before the latest list is downloaded, preventing a recently ticked item from reappearing.
The e-paper display uses fast partial refreshes for actions such as tapping and typing. A full refresh is forced after 10 partial updates to limit ghosting and DC imbalance. The developer notes that the 10-update limit follows M5Stack guidance and community experience rather than being a measured damage threshold.
Building it
Before flashing the firmware, users are advised to back up the PaperMono’s flash because it contains factory calibration data specific to the device. The server is then installed in a Python virtual environment, while PlatformIO is used to build and flash the firmware over USB-C. Wi-Fi credentials and the server address are configured in the firmware.

The firmware contains about 2,400 lines of C++ and is released under the GNU General Public License v3.0. Its board support, e-paper and touch drivers, keyboard layout and widget style are adapted from the MonoMesh firmware for the same hardware.
An optional classifier can use the Claude Code command-line tool to sort new item names into aisles. Manual corrections made through the phone interface are retained in the catalogue.
Limitations and what to try next
The project has no on-device Wi-Fi setup, so credentials are compiled into the firmware. The server also has no built-in authentication and should therefore remain on the local network or be placed behind an authenticating reverse proxy. Only the PaperMono C153 has been tested, and the project currently has no OTA update system.
What it means for India
The PaperMono’s aisle-based interface can be adapted to different shopping patterns, including stores where users follow a defined sequence of sections. The hardware also includes a LoRa radio covering 868–923MHz, but India’s licence-exempt short-range-device rules specify 865–868MHz with technical conditions. Anyone modifying the project to use LoRa in India should therefore verify the device configuration and applicable wireless requirements. The current shopping-list firmware does not use the LoRa radio.
For Indian students and makers, the project provides a practical example of combining ESP32 firmware, e-paper, local web applications, offline data synchronisation and low-power networking into a device intended for everyday use.
For more information, click here.




