Mpesa push system
# MSPrompt - Full System Overview
MSPrompt is a Windows desktop app for sending M-Pesa STK Push prompts from cashier terminals. A cashier enters a customer phone number and amount, the customer confirms on their phone, and the cashier sees the result in the app.
The app is built with Electron, Express, `sql.js` SQLite storage, and ngrok for Safaricom callback delivery.
## Architecture
```text
INTERNET
Safaricom servers
-> ngrok permanent domain
-> Server PC
-> Express server on port 3000
-> payments.db in AppData
-> ngrok process
-> cashier/admin web UI
LOCAL NETWORK
Cashier PC 1 -> Electron window -> http:// :3000
Cashier PC 2 -> Electron window -> http:// :3000
Cashier PC N -> Electron window -> http:// :3000
```
## Deployment Layout
- `1` server/admin PC with full access and all credentials.
- `13` cashier tills/registers.
- `1` optional e-commerce/test terminal.
- Every cashier gets a separate register ID and separate production credential block.
## Current Shop Tills
| Shop | Cashier | Register ID |
| --- | --- | --- |
| Stationary Shop | Single cashier | `stationary-shop-cashier1` |
| Discount Shop | Single cashier | `discount-shop-cashier1` |
| Bedsheet Shop | Single cashier | `bedsheet-shop-cashier1` |
| Baby Shop | Single cashier | `baby-shop-cashier1` |
| Fabrics Material Shop | Cashier 1 | `fabrics-material-shop-cashier1` |
| Fabrics Material Shop | Cashier 2 | `fabrics-material-shop-cashier2` |
| Electronics Shop | Single cashier | `electronics-shop-cashier1` |
| Kitchenware Shop | Cashier 1 | `kitchenware-shop-cashier1` |
| Kitchenware Shop | Cashier 2 | `kitchenware-shop-cashier2` |
| Plastics Shop | Cashier 1 | `plastics-shop-cashier1` |
| Plastics Shop | Cashier 2 | `plastics-shop-cashier2` |
| Curtains Shop | Single cashier | `curtains-shop-cashier1` |
| Furniture Shop | Single cashier | `furniture-shop-cashier1` |
| E-Commerce Test | Single cashier | `ecommerce-test-cashier1` |
> Note: The ground floor shops — Stationary, Discount, and Be …