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 so lately, 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.
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 limited time discounts for the items individually.
The biggest difficult 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 turn around time from the designer was unacceptably long for some simple adjustments. I ended up got my hands on the layout design myself to catch up the progress, while the designer got blacklisted eventually.
Database design was not easy as well. Since the requirements were constantly changing overtime and a lot of things were not confirmed by my client, I went with Couchbase Lite for a schema-less design and used advantages of this design for the development.
At last, the project was finished in 9 weeks in total to have the vending system fitted on 7", 22" & 50" screen 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 afterward.