A local-first desktop app that lets shopkeepers send order updates and reminders over their own WhatsApp. Customer lists never leave the machine, and there are no per-message fees.
The problem
Small shops notify customers on WhatsApp: order ready, bill due, festival greetings. The options were typing messages one by one on a phone, or paying a monthly fee to a gateway that uploads the shop's customer list to someone else's server.
What I built
ShopMsg runs on the shop owner's own computer. They open it in a browser, pair WhatsApp once by scanning a QR, and upload an Excel or CSV sheet of customers.
- Templates with placeholders like
{{Name}}and{{Amount}}. - Saved customer lists, so a sheet is imported once and reused.
- Run history with per-contact status, the exact message each customer got, and a CSV export.
- Customer replies captured in the app and linked to the broadcast they answered.
- One-click launchers for Windows and macOS with a bundled Node runtime.
How it works
A local Express server serves the UI and drives a WhatsApp Web socket through Baileys. Contact lists, message bodies and the WhatsApp session stay in the user's app-data folder, outside the install directory, so replacing the app can't destroy a pairing.
Sending is paced with randomized delays and a daily cap. Settings are written to a temp file and renamed into place, so a crash mid-write can't corrupt them.
Licensing uses Ed25519 signatures that the app verifies offline. A Cloudflare Worker with D1 handles activation, and the Windows and macOS builds are served from R2.
Outcome
Shipped and sold as a licensed download, now at version 1.0.9 after moving to Baileys 7. It has a marketing and download site.
Need something like this built? contact@akhilsingh.in