English | 简体中文
First time installing this? Follow INSTALL.md instead — the same three steps, spelled out, plus where to put the folder, what to do on first launch, and what to check when something fails.
Clone the repository, or download it as a ZIP from https://github.com/liewcc/Open_Vending and extract it.
git clone https://github.com/liewcc/Open_Vending.git C:\Apps\Open_VendingDo not put the folder inside OneDrive, Google Drive or Dropbox — see DATABASE.md.
Double-click setup.bat.
This will automatically download and install all dependencies (Python, Chromium, Node.js, Electron). An internet connection is required. Allow 5–10 minutes on first run.
When you see "Setup complete! Run run.bat to start.", setup is done.
Double-click the Open Vending shortcut on your Desktop (created by setup).
On first launch, the app will prompt for your DVends username and password. Credentials are stored encrypted on your machine.
You can also launch via
run.vbsin the project folder.run.batworks too but briefly flashes a black window — a Windows limitation of.batfiles.
On launch, the app automatically downloads the latest replenishment report from DVends and displays it in the main table.
| Icon | Button | Description |
|---|---|---|
| Home | Return to the main replenishment table | |
| Re-download | Fetch the latest report from DVends | |
| Changing List | Items whose restock values changed since the last scan | |
| Picking List | Daily restock plan by machine — see Picking List below | |
| Settings | Configure app preferences | |
| Update | Grayed out while up to date — lights up when a newer version is available. Click to update (see Auto-update below) |
| Option | Description |
|---|---|
| Show Menu Bar | Display the Electron application menu bar |
| Show Console Window | Show the DOS console during data download |
| Close to System Tray | Clicking × minimizes to tray instead of quitting |
| Notify on Restock Changes | System tray notification when restock values change after a scan |
| Headed Browser | Run a visible browser during scan (press F9 to capture the current page) |
Open the Picking List from the side panel (
Picking List).
The left panel lists every machine that needs restocking today. Each machine shows a badge with the fill percentage — the proportion of items that need to be refilled relative to the machine's total lane capacity. Click a machine to load its item breakdown in the main panel.
The main panel shows every lane in the selected machine along with product name, current balance, lane size, and restock quantity. Rows highlighted in red indicate out-of-stock lanes. Click any row to open a Restock History chart for that product.
The toolbar above the detail panel has two buttons:
| Icon | Function |
|---|---|
| Open the In-Transit Queue modal | |
| Export all queued picking lists as PDF |
Click
in the top-right corner of the detail panel to add the machine to the queue. The icon turns green once the machine is queued. Click
on the left to go back to the machine list without selecting a machine.
Click
in the toolbar to open the queue modal. Each queued machine shows the total units and lane count. From here you can:
| Icon | Function |
|---|---|
| Open that machine in Edit mode | |
| Remove that machine from the queue | |
| Reload all queued entries from the latest report data | |
| Clear the entire queue |
Click
on any queued machine to open it in Edit mode. An "Edit mode" banner appears at the top of the detail panel and all table cells become editable. Changes are auto-saved as you type and stored in the db/ folder — edits do not affect the original report. Click
in the top-right corner to exit Edit mode.
All data is stored in SQLite under db/. If you want to inspect or change it
directly — or point an AI assistant such as Claude Code at it — read
DATABASE.md first. It covers what each table holds, how to
query safely while the app is running, and several rules that are not obvious
from the schema: machine names differ between the picking and sales sides,
product IDs are account-scoped, and vending.db must never be synced through
Drive or Dropbox.
On every launch, the app checks the remote package.json for a newer version. The
icon in the side panel is grayed out while the app is up to date. When a newer version is detected, the icon lights up.
Click the icon to start the update:
- The app downloads the latest release as a zip file.
- A background PowerShell script is launched, then the app exits.
- The script waits for the app to fully close, extracts the zip, and copies the updated files (preserving
node_modules/,python/,db/, and other local data). - The app relaunches automatically via
run.vbs.
