Skip to content

Introducing Topdog - The app for pet owners to discover nearby pet competitions. Enter and judge contests - your go-to for dog enthusiasts!

Notifications You must be signed in to change notification settings

wiaandev/Topdog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


GitHub repo size GitHub watchers GitHub language count GitHub code size in bytes LinkedIn Instagram

Wiaan Duvenhage
200307
DV300 | Term 2

Topdog

An application that helps pet owners find and enter dog competitions for both Android & iOS


· Report Bug · Request Feature

Table of Contents

About the Project

image1

Project Description

Topdog is an innovative competition app designed specifically for dog owners and enthusiasts. This user-friendly application allows individuals to discover and participate in various dog competitions, providing a platform for their beloved pets to showcase their skills and talents. Whether it's agility, obedience, conformation, or other dog-related activities, Topdog offers a comprehensive directory of events and competitions tailored to different breeds and disciplines.

Built With

                          

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

For development, the latest version of Android Studio is required. The latest version can be downloaded from Android Studio

Installation

  1. Clone the repo
git clone https://github.com/wiaandev/Topdog.git
  1. Open the project

Locate and drag file into Visual studio code.

  1. Install Packages
npm install
  1. Run Project
npm start
  1. Download Expo Go on Android or iOS

5.1 You can also run the iOS simulator or Android emulator. NOTE: Android studio is required for the Android emulator

  • For Android Emulator
expo run:android 
  • For iOS simulator
expo run:ios 

Features and Functionality

Register & Login Account

image2 Users can create their account by entering their information

View competitions

image3 The initial idea was that users can view competitions based on their phone location. But users can view locations that are open or closed.

Add Dog to Account

image4 Users can add their pets to the application by uploading a picture of them with their necessary credentials, like their weight, height and whether they are vaccinated as some competitions require to know the information.

View Individual Competiton

image5 Once tapping on a competition, users can view more information about the competition, like the requirements, the description, when it ends as well as the dogs that have entered as well.

Judge Entries

image6 Users that have signed up as judges to the application, would be able to judge the entries by adding a score from 1 - 100.

View Leaderboards

![image7][image7] Once the judges have entered the scores for all the pets, they can view the leaderboard of each competition

Concept Process

I am a very huge fan of dark theme applications and using colors that contrast extremely well, so in conclusion I thought it was a no-brainer to use in black, white and red in conjunction with each other to create the most eye-catching application. By looking at my wireframes you would notice that my answering method differs from the final application outcome. I have come to realise how intricate and dense Kotlin can be so decided to go with a more simpler, yet effective answering method.

Wireframes

image7

Firestore Database Structure

image8

User Flow

image9

Development Process

The Development Process is the technical implementations and functionality done for the app.

Implementation Process

For the entirety of the project, I have used Expo CLI and the entire project was built in JSX. For my front-end I have utilised React Native Elements, UI Toolkit for cross-platform development. All the UI elements seen on my application was built and implemented using React Native Elements

Front-End

  • I installed my necessary fonts and created a fonts folder inside of my assets folder, where I then put my fonts. Next in my App.js I created a useFonts hook which would load my fonts onto the application.

  • Using a <FlatList/> I was able to map my data from my Cloud Firestore database to my front-end.

  • I used a <SafeAreaView> to prevent my front-end from going above the screen and into the status bar.

Navigation
  • I have made use of a Stack and Tab Navigation during the development of my application.
  • In my App.js I created my stack navigation with the createNativeStackNavigator() method.
  • I created a seperate Stacks folder where I then created a HomeTab.jsx file where I then implemeted my Tab Navigation

Firebase

  • I created a firebaseAuth.js, firebaseDb.js & firebaseStorage.js which held all the back-end functionality and API calls I made with my application.
  • In my firebaseAuth.js I handled all my data in regards with signing up and logging in a user and getting the currently logged in user.
  • In my firebaseDb.js I handled all my data in regards with the CRUD functionality of the application, like getting all the competitions, getting a single competition, getting the user's current pets, getting the leaderboard of a competition, adding a pet to a user profile and much more.
  • In my firebaseStorage.js I handled my image uploading functionality which made it possible for users to upload a picture of their pets to the database.
  • Using createContext() and useContext() hooks in conjunction with wrapping my App with a <Provider> element from React I was able to pass state down to any component and then just calling the firestore functions inside of the context files.

Highlights

  • A highlight of this project was definitely learning cross-platform development with React Native
  • It was also a high point for me to load my app onto my mobile device and interacting with it
  • Fixing all of the bugs I struggled with was also a big plus for me
  • Seeing the data being pulled from my Cloud Firestore as well as images from my storage bucket.

Challenges

  • Fixing my context. I had to re-load to re-save my context file and the current file of the screen that I am on in order for the context to re-render and display my data. I unfortunately, could not get it fixed in time.

Future Implementation

  • Adding onboarding screens
  • Fixing my context bugs
  • Adding animations
  • Adding proper validation to all my screens
  • Adding a map to visualise where the competitions are being held.
  • Adding user profile pictures and adding more information on the user profile screen
  • Adding badges if a dog has won a competition
  • Adding voting functionality.

Final Outcome

Mockups

image2 image3 image4 image5

Authors

License

Distributed under the MIT License. See LICENSE for more information.\

Contact

Acknowledgements

About

Introducing Topdog - The app for pet owners to discover nearby pet competitions. Enter and judge contests - your go-to for dog enthusiasts!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published