by Pied Pipers
EdgeCart is a lightweight, offline-first smart checkout system designed for rural and low-connectivity regions. Built on Raspberry Pi 4, the system enables local retailers to seamlessly process customer checkouts, store transactions locally, and sync them with the central Walmart cloud infrastructure when connectivity is available.
This solution directly supports Walmart Sparkathon's themes of:
- Reimagining Customer Experience
- Transforming the Retail Supply Chain
- Building Trust in Retail using Edge Computing and Resilience
- Customers select products; cashier adds them via a simple UI.
- A transaction is created locally with a unique UUID.
- All order data is stored in a local SQLite database.
- The transaction UUID is pushed to a persistent message queue (stored locally).
- The customer is checked out even without internet connectivity.
- A background service monitors network availability.
- When connectivity is restored:
- UUIDs are dequeued.
- The transaction data is pushed to the Walmart Cloud API (or simulation server).
- On successful sync, the entry is removed from the local queue.
- Frontend: Web UI (React/HTML) running locally in Chromium or kiosk mode.
- Backend: Node.js Express server handling logic & APIs.
- Local Storage: SQLite DB + llIndexDB + persistent file-backed message queue.
- Sync Engine: Background service in Node.js using event loop.
- Platform: Raspberry Pi 4 (4GB RAM) running Raspberry Pi OS.
- ✅ Raspberry Pi 4 Model B (4GB)
- ✅ 32GB+ microSD Card (Class 10)
- ✅ 5V 3A Power Adapter
- ✅ Local display or touch screen (optional)
- ✅ USB barcode scanner (optional)
| Layer | Tech |
|---|---|
| Frontend + Backend | NextJS |
| Local DB | SQLite3 , IndexDB |
| Queue | File-backed JSON Queue |
| Sync Logic | Node.js Worker / Cron Job |
| Cloud API | AWS |
| OS | Raspberry Pi OS (Lite or Full) |
- Use Raspberry Pi Imager to flash Raspberry Pi OS (Lite or Desktop) to SD card.
git clone https://github.com/boss6825/Pied-Pipers.git
cd checkoutlite
npm install
- Install backend dependencies:
npm install
- Start the backend server:
npm run start:backend
The backend will run on port 4000 by default (see backend/index.js).
