Team status200
presentCoffee Connoisseur

Coffee Connoisseur Demo Video

Coffee Connoisseur Demo Video

The best coffee, closest to you.

The idea for Coffee Connoisseur came from a love of coffee and the idea that this could help small businesses while bringing coffee lovers a place to find a new favourite coffee shop, something we hadn’t seen on the market before.

The app has a map which displays coffee shops and enables users to search by their location or by postcode, view a list of shops and filter by preferences and sort by distance or rating.

Within each shop users can submit a rating, favourite the shop and when they buy a coffee from the shop they can upload an image of it to collect a coffee reward token.

Users can create a profile where they can see their favourite shops, their uploaded images and their coffee reward card.

When they fill the reward card the app gives the user a QR code to redeem a free coffee at one of the shops from the app.

The Team

  • Team member imagePreview: Team member image

    Holly Farr

  • Team member imagePreview: Team member image

    Emily Lipscomb

  • Team member imagePreview: Team member image

    Oskar Brzeski

  • Team member imagePreview: Team member image

    Zaid Hassan

  • Team member imagePreview: Team member image

    Carmel Barwick

  • Team member imagePreview: Team member image

    Nana Opong

Technologies

Technologies section imagePreview: Technologies section image

We used: Frontend: React Native, Typescript, Tailwind, Expo, Android Studio, ESLint, Prettier. Backend: MongoDB, Koa, Jest, Node.js, Render, Atlas.

For the frontend, we used React Native to easily develop a cross-platform application. We wrote every part of the app using TypeScript to give us the guarantee that all of our data was in the right format, which was especially helpful when making major changes to both the frontend and backend architectures.

We used Expo to build the application so we could test that the app behaves as intended. It also allowed us to see how our changes affected the look and feel of the app in real-time. To test the app, we used Android Studio's emulator to quickly see how the app looks and functions, as well as Expo Go to allow us to test the app on a physical device.

To ensure that the codebase remained consistent throughout development, we utilised ESLint to enforce a strict set of linting rules for our code, and Prettier to automatically fix any inconsistencies that occurred.

For the backend, we chose to use MongoDB as it gave us a more intuitive method of retrieving data from our database. To store the data we chose Atlas as it provides seamless integration with the MongoDB database. To ensure that all of our endpoints worked the way we expected, we utilised Jest as a means of confirming that no unintended behaviours reach production.

We built the API using Koa as it uses async functions, which allowed us to write more concise code. We hosted our app with Render due to its simplicity and our familiarity with it meant we were confident we would be able to use it for hosting a small API.

Challenges Faced

- Git merge conflicts due to parallel development
- Budget constraints
- Unforseen hardware complications