A comprehensive IoT simulation project designed for testing integrations with Warehouse Management Systems (WMS). The system provides a high-fidelity virtual representation of a vending machine, complete with hardware-level logic and inventory tracking.
The primary user interaction point, featuring a sleek dark theme, vibrant product cards, and a functional keypad.
Figure 1: High-fidelity visual representation of the vending unit.
The hidden Admin Panel allows for real-time adjustments to the machine's operational parameters.
Figure 2: Administrative dashboard for machine tuning.
Development-focused system logs provide visibility into the simulator's internal events and communication.
Figure 3: Live telemetry and event tracking (expanded view).
The simulator provides a step-by-step visual and logical progression for every transaction.
-
Payment: Users can simulate inserting cash ($5.00). The system updates credit in real-time.

-
Selection: Entering a code (e.g.,
11) validates the product availability.
-
Dispense: The machine reduction stock and 'drops' the item. The logs record all internal events.

-
Pickup & Return: After picking up the item, the user can request a refund of the remaining balance.

- server/: Machine Controller API.
- REST API for external integration (Inventory, Remote Commands).
- Webhook Event Emitter (Sale, Low Stock).
- Node.js + Express.
- client/: Visual Simulator.
- Interactive hardware simulation (Glass front, Keypad, Coin mechanism).
- Admin configuration panel.
- React + TailwindCSS.
To run the full simulator, you need to start both services.
-
Start the Backend (Port 3000)
cd server npm install npm start -
Start the Frontend (Port 5173)
cd client npm install npm run dev
- Frontend: React, TailwindCSS, Lucide Icons, Framer Motion (for animations).
- Backend: Node.js, Express.
- Infrastructure: Docker & Docker Compose for orchestrated deployment.
- Networking: REST API & Webhooks.
This simulator is designed to act as an edge device. It exposes an API for your WMS to poll data and pushes events when specific actions occur.
For detailed API specifications, see the Backend Documentation. For user interface guides, see the Frontend Documentation.