Team Tech Titans
presentJava Rewards

Java Rewards Demo Video

Java Rewards Demo Video

Fuel your loyalty with Java Rewards!

Java Rewards was born out of our desire to create an app that encourages customers to shop at local, independent coffee shops whilst providing some of the perks offered by the big chains. One such perk is a standalone digital loyalty card.
By combining different local businesses, customers are able to enjoy the convenience and efficiency of using the one loyalty card in a range of areas.
Java Rewards also offers the ability to order and pay via the app, this is a convenient option that many local, independent businesses do not offer in our experience.
The rationale for business owners to sign up is that it increases their exposure to potential new customers and provides further incentive to repeat customers.
Customers can view what businesses in their area are signed up, including their location on a map, and can either order via the app or in store. Each customer has a unique QR code that the business can scan and every 8th coffee is free for the customer.

The Team

  • Team member imagePreview: Team member image

    Joshua Sharples

  • Team member imagePreview: Team member image

    Simon Tam

  • Team member imagePreview: Team member image

    Alexis Creoulo

  • Team member imagePreview: Team member image

    Kate Windle

  • Team member imagePreview: Team member image

    Liam Tomlinson

  • Team member imagePreview: Team member image

    Kaswara Shabuo

Technologies

Technologies section imagePreview: Technologies section image

We used: React Native, Expo, Typescript, Node.js, Express.js, MongoDB, Firebase, Axios, React Native Elements, Expo Camera, Expo Location, React Native Maps, Stripe

Frontend:
React Native and Expo - We wanted to create a mobile application that would work on both Android and iOS devices and React Native allowed us to do this. There was excellent documentation on setting up the app with Expo. Also, with Expo we were able to see any changes we made in real time making it excellent for testing.
Typescript - we chose Typescript over Javascript because we wanted to challenge ourselves and it helped with catching errors during development.
Firebase Authentication - Easy to set up and it allowed us to handle sensitive user information without the need to store this in our database
Axios - used to make calls to our API. It was simple and easy to use and provided built-in JSON parsing of responses making it easier to work with the data received.

Backend:
MongoDB - provided a flexible schema so we could store data of different structures easily and is straightforward to use because it stores data in JSON-like documents. Also there was plenty of documentation available.
Express - we have previous experience using Express and it enabled us to more easily create a restful API compared to using the built-in functionality of Node.
Node.js - we used Node to build our backend with the Express framework. Node provided a flexible way to build the back end with Javascript.

Challenges Faced

Throughout the project, we encountered several challenges with the React Expo Go app. Initially, we grappled with local Wi-Fi issues that hindered the loading and refreshing of the Expo Go app. To address this, we turned to emulators such as the iPhone emulator in Xcode.
Additionally, we faced obstacles with certain security policies on the Wi-Fi network, impeding data transfer between devices on the LAN. To circumvent this issue, we employed the '--tunnel' feature, enhancing connectivity between mobile devices and our laptop.

Another hurdle arose in implementing TypeScript, a language unfamiliar to everyone in our group. However, through collaborative effort, we leveraged the varying levels of comfortability within the team to overcome this challenge, gradually acquainting ourselves with TypeScript's syntax and data types.
Finally, we encountered a few merge conflicts when pushing to our main branch on GitHub. Nonetheless, through effective teamwork, we successfully resolved these conflicts, ensuring continuous updates to our main branch throughout the project.