>

>

the
all-in-one solution for developing, deploying & monitoring

a fleet of
connected devices.

Design a powerful user experience with
endless possibilities and no constraints.

[ Read the documentation > ]

Hardware development made simple.

[ View the documentation > ]

Write code with the tools you know.

UI's are built with web technologies and are locally served in a locked down version of Chromium.

Test and emulate in browser.

Using our chrome extension you can emulate being connected to a real machine and make decisions on the outcomes you want to test. For example, forcing a vend to fail.

Deploy to canary machines.

You can customise the deployment pipeline to fit your required level of QA. We support up to 5 stages and unlimited machines assigned to those stages.

Test and emulate in browser.

After QA you can easily move your application to the production stage to instantly deploy to all live machines.

+ JS

An npm package to connect your application to the hardware.

npm i vendos

[ View on npm > ]

>

Trigger and listen to vending events.

Vending and all other hardware functions are fully abstracted into our easy to use JS package.

Trigger.jsx

1 import { useCurrentUser, useEntity, useTransact }
2 start from 'vendOS-react'
3
4 // Create
5 const [currentUser] = useCurrentUser()
6 const [project] = useEntity({ project: { name: 'Build the thing' }})
7 const [transact, errors, syncing] = useTransact()
8 const [ids, dbAfter, dbBefore] = transact([{
9  todo: {
10    title: 'Write more code',
11    assignedTo: currentUser,
12    project
13  }
14})

>

Save data to your campaign.

Campaign data is sent directly to our servers and can be viewed in realtime on our dashboard. We also have an on machine cache to avoid issues with offline machines.

Campaign.jsx

1 import { useCurrentUser, useEntity, useTransact } from 'vendos.js'
2
3 // Create
4 const [currentUser] = useCurrentUser()
5 const [project] = useEntity({ project: { name: 'Build the thing' }})
6 const [transact, errors, syncing] = useTransact()
7 const [ids, dbAfter, dbBefore] = transact([{
8  todo: {
9    title: 'Write more code',
10    assignedTo: currentUser,
11    project
12  }
13}])

>

Initiate and confirm a payment.

Easily integrate with terminals. We have written, tested and continually maintain 6 different types.

Payment.jsx

1 OS.Payment.charge.hold({
2  amount: 21.00,
3  reference: 'Some reference'
4 }).then(res => {
5  // Successful hold placed
6  console.log(res)
7 }).catch(err => {
8  // Payment declined or the user canceled
9  console.error(err)
10})

Trigger.js

Data.js

Pay.js

1
2
3
4
5
6

7
8
9
10
11
12
13
14

    
    import vendOS from 'vendos-js'

    const OS = new vendOS()

    OS.Machine.vend.post({
        type: 'product',
        attempts: 5,
        productId: 'sku-1234'
      }).then(() => {
        console.log('Yay! Vend successful.')
      }).catch((err) => {
        console.error('We did not vend :-(', err)
      })
    
  

Campaign.jsx

1 import { useCurrentUser, useEntity, useTransact } from 'vendos.js'
2
3 // Create
4 const [currentUser] = useCurrentUser()
5 const [project] = useEntity({ project: { name: 'Build the thing' }})
6 const [transact, errors, syncing] = useTransact()
7 const [ids, dbAfter, dbBefore] = transact([{
8  todo: {
9    title: 'Write more code',
10    assignedTo: currentUser,
11    project
12  }
13}])

Payment.jsx

1 OS.Payment.charge.hold({
2  amount: 21.00,
3  reference: 'Some reference'
4 }).then(res => {
5  // Successful hold placed
6  console.log(res)
7 }).catch(err => {
8  // Payment declined or the user canceled
9  console.error(err)
10})

Release your app to the world in one click.

Drag and drop upload to see all your machines update over the air with no manual configuration necessary.

See the results appear in real time.

Your dashboard shows you realtime data feeds and charts, securely sent directly from machine to our cloud servers.

React to errors and faults from anywhere.

SMS and desktop notifications allow you to send technicians on site the instant that they are required. A troubleshooting walkthrough is also displayed on the machine screen to show them exactly how to solve the error.

A CLOSER LOOK AT VENDOS CLOUD

A CLOSER LOOK AT VENDOS CLOUD

>

View realtime analytics.

The data you capture from your fleet of machines is securely fed up to our servers in realtime. This gives you the ability to monitor exactly how well they are performing and make changes to your storefront or campaign as and when its needed.

>

Manage machines.

Move machines between different campaigns, view their stock levels and get notified on errors.

>

Add or modify products.

We have an easy to use product repository and templating system built-in. This allows you to easily change products on the fly for instant updates across your fleet.

We're ready for you.

We would love to hear from you, fire across any and all questions.