DispenseFirst
Another developer and I built out DispenseFirst, a point-of-sale system for cannabis dispensaries, in Vue.js and Node.js, with APIs for transactions, inventory sync and compliance.
- Role
- Software Developer (contract, part-time)
- When
- Jan 2021–Jan 2022
- Client
- DispenseFirst
- Stack
- Vue.js, Node.js
Summary
DispenseFirst sells one system for cannabis retail, covering the in-store point of sale, an online store and self-service kiosks, with state compliance built in. Cannabis is one of the most tightly regulated things you can sell at a counter. Every item is tracked from the moment it arrives to the moment it leaves, the state's tracking system has to agree with the store's, and a sale can't go through if it breaks the rules.
From 2021 to 2022 I worked on it part-time as a contract developer. Another developer and I built out the whole thing. We moved the POS off its legacy stack to Vue.js and Node.js, built APIs for real-time transactions, inventory sync and compliance, and integrated e-commerce checkout.
How it works
- A budtender rings up the order at the POS. The customer is checked in against their state ID, and payment is taken by cash, debit or an online payment option.
- Stock is tracked by batch, and the store's inventory stays matched to the state's own system. The online store and kiosks sell from the same inventory as the counter, so orders placed online land straight in the POS.
- The platform talks to the state tracking systems (METRC and BioTrack). Incoming manifests import from the state system, and an order is blocked if the state system can't be reached or the customer is over their legal limit.
Screenshots
DispenseFirst's company site in 2021, while I was working on the product.
My part
Another developer and I built it, part-time, alongside my job at West Monroe. The storyboard is drawn from DispenseFirst's public materials, not from screenshots.
Links
Stack: Vue.js, Node.js
- See it livedispensefirst.com (company site) ↗

