mrkeyoor.com_
Sat 17 Oct 13:32 UTC
Self-Hostedevaluationupdated 15 Oct 2026

papermono-shopping-list review

PaperMono Shopping List turns an M5Stack PaperMono e-paper device into a shared household grocery list, backed by a small server and a phone web app. It keeps a visible fridge list in sync with phone edits and groups items by shopping aisle.

+0 / 1dstars / 7d
Verdict

Our PaperMono server run passed all 120 tests in 7 seconds after a 13-second install, making the software worth trying for an existing PaperMono owner. Choose it if you want the fridge display enough to maintain firmware and a protected home server. The unauthenticated API and compiled-in Wi-Fi settings make it a poor fit for an appliance-style setup.

We ran it

Lab card: what happened when we ran papermono-shopping-listScreenshot of papermono-shopping-list (github.com/seamusc/papermono-shopping-list)
Install✓ · 13s74 packages · 103 MB
Build✓ · 2s
Tests✓ · 7s120 passed · 0 failed of 120 (pytest)
Known vulns0(pip-audit)
Repo96 files~7,557 lines of source · 1.3 MB · 1 CI workflows · Dockerfile · tests dir

Answers from our run

Does papermono-shopping-list build from source?

Dependencies installed in 13 seconds (74 packages), and the build succeeded in 2 seconds. We cloned commit d162a9b into a clean Debian container with 3 CPUs and no project-specific setup.

Do papermono-shopping-list's tests pass?

Yes. The project's own test command finished in 7 seconds and reported 120 passed, 0 failed (pytest).

Does papermono-shopping-list have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use papermono-shopping-list?

Households expecting a finished appliance: the README calls this a personal project and says only the PaperMono C153 has been tested.

What are the alternatives to papermono-shopping-list?

KitchenOwl, Grocy. Our PaperMono server run passed all 120 tests in 7 seconds after a 13-second install, making the software worth trying for an existing PaperMono owner.

Setup3/5Server passed, but firmware flashing and proxy authentication remain
Docs4/5Detailed server and recovery guides, with some stale design notes
Community2/5205 stars and recent PRs around an explicitly personal project
Maturity3/5120 server tests passed, with documented sync and hardware limits

Discussed on

  1. hnShow HN: PaperMono, e-ink fridge magnet shopping list with mobile web page152 points

Who it’s for

PaperMono owners who want a fridge display backed by a phone-friendly shopping list.
Home-server users willing to maintain SQLite storage and protect remote access.
Firmware hobbyists comfortable saving factory flash and recovering a device over USB.

Who it’s NOT for

Households expecting a finished appliance: the README calls this a personal project and says only the PaperMono C153 has been tested.
Anyone planning to expose the API directly to the internet: the server has no authentication.
People who need to change Wi-Fi from the device: credentials are compiled in, requiring a firmware rebuild.
Users requiring uninterrupted touch response and duplicate-free offline replay: the design notes document blocking syncs and possible duplicate retried adds.

Setup reality

Our server run at commit d162a9b installed 74 packages in 13 seconds and occupied 103 MB. The build passed in 2 seconds. Pytest passed all 120 tests in 7 seconds, with 0 failures, and pip-audit reported 0 known vulnerabilities.

The server needs Python 3.11 or newer, persistent SQLite storage, and a reachable address. Basic lists need no Claude credential when SHOPPING_LIST_CLASSIFIER=none. Optional sorting needs an authenticated Claude Code CLI. Protect remote web access with an authenticating proxy because the API has no login.

The physical setup also requires a PaperMono, compiled-in Wi-Fi settings and a server URL, followed by firmware flashing. Back up factory flash first. Our Python server measurements do not cover that device work, and only the C153 is documented as tested.

A shared fridge list gives the PaperMono a daily job

Add milk from your phone, and the same list can appear on the e-paper screen attached to your fridge. PaperMono Shopping List combines firmware for M5Stack's PaperMono with a FastAPI server and a browser interface. Aisles appear in the order you walk through the shop, and previously entered names become suggestions. The appeal is a household list you can glance at without opening a phone, with the phone still available for adding groceries elsewhere.

The repository we checked out occupied 1.3 MB across 96 files, and our measured Python project was the server under server/. The hardware half is C++ firmware using PlatformIO. This separation makes the recommendation quite specific: try it if you already want a PaperMono project and are willing to maintain its server. If your only goal is sharing groceries between phones, the physical device and its firmware introduce work you can avoid.

What happened when we ran it

Our sandbox installed commit d162a9b in 13 seconds, adding 74 packages and using 103 MB on disk. The build passed in 2 seconds, and pytest passed all 120 tests in 7 seconds, with 0 failures. We ran the server project on October 15, 2026, in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and Python 3.12. No secrets were available to the process.

Pip-audit reported 0 known vulnerabilities, and the scan found a Dockerfile, a tests directory, and 1 CI workflow file. That is a reassuring result for the server path we exercised. It does not measure the touchscreen, device battery, physical flashing, or the quality of aisle suggestions from Claude. A green Python suite is a reason to try the software, while the hardware and network choices still decide whether your household will want to live with it.

The server has no login, so remote access needs protection

The server security notes explicitly say anyone who can reach the API can read and change the list. Keep the device on a trusted LAN address. If you want to use the web interface away from home, the documented route is a proxy or tunnel that authenticates people first. The device cannot complete an interactive browser login, so the documentation separates its local connection from the protected remote entrance.

A successful 13-second install does not configure that boundary for you. You also need persistent storage for the SQLite database and a backup routine. The server guide documents the database location, a safe SQLite backup command, and both systemd and Docker deployment. Set the shopping-list timezone explicitly for scheduled syncs, especially in containers using UTC. Those are ordinary server chores, but they are still chores attached to buying milk.

Changing Wi-Fi requires new firmware

The README says only the PaperMono C153 has been tested, and Wi-Fi credentials plus the server URL are compiled into the firmware. There is no on-device Wi-Fi setup. Moving to another network therefore means changing configuration and rebuilding the device image. Before the first flash, the firmware guide tells you to save the device's flash because it contains factory calibration data. Treat that backup as part of setup, before you overwrite anything.

Our 2-second successful build belongs to the Python server path, so it cannot estimate preparing or uploading firmware. The repository documents PlatformIO and a container-based firmware route, plus a browser flasher. Those options make the process more accessible without removing the need to understand which image you are writing. This is appropriate for someone comfortable recovering a device over USB. It is a poor present for someone expecting to change a Wi-Fi password through a settings screen.

Offline edits survive, with limits around sync

The device caches the list and queues edits on flash, allowing use without a live connection. The design notes document concrete compromises: syncing blocks the interface, retried adds can duplicate an item, and pending items cannot be ticked until they receive a server ID. Last-write-wins handling also means simultaneous phone and device edits have no conflict-resolution screen. These are understandable choices for groceries, provided you know what happens during a connection failure.

The 120 passing tests do not erase those documented behaviors. Nor would I use the old design-notes claim about missing light sleep as a current limitation: the README and dedicated firmware guide describe light sleep, and October activity includes that work. The documentation has drifted between pages. Read the specific operating guide alongside the short limitations list, and avoid treating every historical note as a description of the current firmware.

Claude sorting is optional and sends item names outside your server

The basic list works with SHOPPING_LIST_CLASSIFIER=none, which is also the Docker default. Enable the classifier and the server invokes the Claude Code CLI with new item names and aisle names. You must authenticate that CLI through an API key or the documented subscription-token route. Manual corrections stay in the catalog, so you can teach the right aisle yourself. For a household that prefers local-only data handling, leave classification disabled.

The 103 MB environment from our sandbox does not establish the behavior of an authenticated classifier. The docs also warn that enabled OpenTelemetry logging includes item names, another choice to make deliberately. GitHub showed 205 stars, an October 6, 2026 last push, and an October 11 open documentation PR. The latest-release endpoint returned no release. Recent work supports calling this a maintained personal project, while the author explicitly says it runs on a device at home.

KitchenOwl is the better comparison if shared grocery lists and recipes on phones are the whole job. Grocy suits a household that also wants inventory management. I would choose PaperMono Shopping List when the fridge display is the reason for the project and someone in the household will own firmware recovery and the server. Before flashing, save the factory image. Before opening remote access, put authentication in front of the web interface.

Alternatives

ProjectWhat it isPick it when
KitchenOwlA self-hosted grocery list and recipe manager with phone clients.pick this instead when sharing groceries and recipes on phones is enough.
GrocyA self-hosted household manager with inventory and shopping lists.pick this instead when you need stock management as well as a grocery list.

What people are saying

  1. [velocity-scout] seamusc/papermono-shopping-list
  2. [hackernews] Show HN: PaperMono, e-ink fridge magnet shopping list with mobile web page

Sources

  1. PaperMono Shopping List README
  2. Server deployment, classifier, and security
  3. Firmware setup and recovery
  4. Design decisions and known limitations
  5. Recent repository activity
  6. GitHub releases

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →