What Was The Problem? π€

Castle Lite Unlocks is an event that immerses itself in Hip-Hop culture completely through music, fashion, dance, lifestyle and collaborations with South African artists and international acts.

Delta Baverages Zimbabwe which produces & distributes Castle Lite in πΏπΌ Zimbabwe where running a promotion where patrons in select bars all around Zimbabwe purchase a set amount of alcohol on the day of the draw, they are entered into the draw and at midnight a draw is ran and a winner is announced.
The winners then get tickets to travel to South Africa for the Castle Lite Unlocks: Post Malone event. Delta Beverages through their partnered Digital Agency Barkers Ogilvy Zimbabwe reached out to us with the following task: Build a solution that allows select bars across the the country to have patrons enter into a draw that is run live in the bar and allow them to announce a winner after the draw.
What Did We Build? βοΈ
We got straight to work and settled on the following for our tech:
For this project we wanted to experiment and build something different. Because the draws needed to be run at different bars on different days and at different times we settled on building a desktop app which could be deployed on a single machine in the bar. As the night wears on waiters collect coupons from patrons as they buy alcohol, the waiters then scan the coupons with a mobile app we built and collect the patrons name, surname and ID number, tallying up how much alcohol each patron has bought in the backend. The Desktop App then constantly synchronises data from the backend database via an API and caches this data on the machine in the bar, this was done just incase of power outage or the wifi going down at a random time the draw could still be run using the last batch of synced coupons. We also made it possible to manually trigger a coupon sync at any time. At midnight or whatever time is decided entries into the draw are concluded and the system is triggered to roll and randomly select a winner which the desktop app announces on screen.
We built an Android Mobile App which was installed on different waiters mobile devices in different bars. As the night of the draw progressed the different waiters would use the app to go around the bar and collect coupons from different patrons as well as their details. This data was collected by the device and sent to a backend API which saved all this data in a database. For audit purposes we did not allow the same waiter or different waiters to collect the same coupon multiple times so we tied in a record of a scanned coupon together with the waiter, the patron, date as well as time so that all entries can be traced.
- π .Net Web API
We built and exposed a Web API with the purpose of receiving requests from different mobile devices for coupons being entered into the draw. The API then connects to a database and stores all the data. The Desktop App also connects to the same API and pulls data from the database via the API at different intervals to cache coupons in the Desktop App. This was done so that incase there is power outage the draw could be ran with the last batch of synced coupons.
- π PostgreSQL Database
We deployed a PostgresSQL database which was our central store for the data for the project. We love working with PostgresSQL because it is light-weight, fast and open source.
When choosing technology we always do our research and find the most supported technologies for the long-term as a systerm grows so that we do not introduce vulnerabilities into our clients systems and technology. We always use well supported technology and love working with Open Source Technology.
The Solution π
Below are screen-grabs of of the Mobile App we developed for this project.
Below are screen-grabs of of the Desktop App we developed for this project.
