The FreshUp vending system is an Android application which runs on my client's tailor-made smart vending machines to enable multimedia advertisements on the machines and provides unique features like scheduled discounts, on-screen product description & nutrition information, remote management of the machines, etc...
The schedule of this project was extremely tight. In fact, FreshUp contacted me quite late that there was only a month left before they have to send the vending machines out to serve their clients, and they had nothing done on the software side at that time. Turns out I had only 20-ish days to build the 1st production release from scratch, and I have managed to make it, which I'm very pound of.
Some of my UI sketches
UI designs of the 1st prototype
Scheduled Discounts
One of the unique features of this Android vending system over the traditional physical button-based vending machines is to provide scheduled discounts for customers.
Since the prices are stored in the app's database and synchronised to the vending machine from the app, it is possible to have multiple prices for the same item stored at the same time. Thus, there are time ranges of the scheduled discounts stored in the database for each item. Therefore, the vending machine is able to provide time-based discounts for the items individually.
The biggest difficulty is probably the extremely tight schedule, to get an app built from completely scratch for production uses in 20-ish days, even though the 1st version for production contains basic selling features only, it was a real challenge. I've done nothing like that before. 
What made things worse was the unclear specification (or call it constantly changing requirements), and the turnaround time from the designer was unacceptably long for some simple adjustments. I ended up getting my hands on the layout design myself to catch up on the progress, while the designer got blacklisted eventually.
Database design was not easy as well. Since the requirements were constantly changing over time and a lot of things were not confirmed by my client, I went with Couchbase Lite for a schema-less design and used the advantages of this design for the development.
At last, I was able to finish the project in 9 weeks. Have the vending system fitted on 7", 22" & 50" screens with most of the features implemented, except the remote management feature since my client was not ready to implement their backend system yet, but the database structure was already ready for that. I am NOT doing any follow-up on this project as the client decided to take this project back for in-house development afterwards.
Back to Top