Skip to content

A mock app that is designed to allow a user to research breeds and search for dog adoptions. Our team is comprised of 7 full-stack engineers who have each taken ownership of front-end and back-end development.

Notifications You must be signed in to change notification settings

hratx-blue-ocean/WOOF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WOOF

Contributors:


@aliciav-texas

Alicia Villanueva - Project Manager
GitHub • LinkedIn

@JohnathanBrennan

Johnathan Brennan - Project Manager
GitHub • LinkedIn

@bkern98

Ben Kern - System Architect
GitHub • LinkedIn

@UnlikelyHero

Don Vida - UI Designer
GitHub • LinkedIn

@mariaykim

Maria Kim - UI Designer
GitHub • LinkedIn

@itsme-kristin

Kristin Gadgil - Full Stack Engineer
GitHub • LinkedIn

@robwilliams-it

Rob Williams - Full Stack Engineer
GitHub • LinkedIn


Table of Contents



About the Project

Woof is a one-stop shop for a user to research dog breeds, find a pet nearby ready for its forever home, and locate nearby groomers. The user can create an authenticated account to save their favorite dogs and breeds and have a tailored experience based on their location.

woof home page screen

Key Features

  • User authentication
  • Displays dogs nearby available for adoption
  • Explore breeds and compare
  • Select dogs and breeds to add to favorites
  • View favorite dogs and breeds on user profile
  • Contact rescues and shelters with the adoptable dog selected

Home Page

woof home page demo

  • Click on a dog to see more information
  • Click the heart icon to add dog to your favorites or delete
  • Enter your zip code to search for dogs near you
  • Click the GET STARTED button to research dog breeds

User Authentication

woof authentication

  • Click on SIGN UP to create a new account
  • Enter information that will be used for authentication and website personalization
  • Click on SIGN IN to access your account
  • Click on LOGOUT to exit your account

Adopt

woof adopt

  • Enter your zip code to find dogs near you
  • View map that shows your location and nearby organizations and groomers
  • Click on a map icons to see more information about the organization or groomer
  • Click on a dog card to see more dog information
  • Click the heart icon to add dog to your favorites or delete
  • Filter dogs shown based on distance, size, gender, age, coat, and other relevant information

Pet Overview

woof dog overview

  • View all pictures of the specific dog
  • View description of the dog
  • View information on where the dog is located
  • Add or delete the dog from your favorites
  • Click on the email link to contact the organization
  • View other pets available at the organization

Breeds

woof breeds

  • View all dog breeds available for research
  • Filter dog breeds based on breed group, size, temperament
  • View comparison of two selected dog breeds
  • Click on a breed card to see more breed information
  • Click the star icon to add breed to your favorites or delete

Breed Overview

woof breed overview

  • View information about the selected breed
  • Click the star icon to add breed to your favorites or delete
  • View map that shows your location and nearby organizations and groomers
  • Click on the map icons to see more information about the organization or groomer

My Profile

woof user profile

  • View your information associated with your account
  • Update your information associated with your account
  • View your favorite breeds
  • View your favorite dogs
  • Click on a card to see more information about the dog or breed
  • Click on an icon to add more remove from your favorites

Workflow

Our team used Agile workflow for this sprint.

Trello

A Trello board was used to create and track tickets. We held daily meetings to discuss accomplishments, challenges, and upcoming tickets. To effectively collaborate remotely while allowing for quick communication if needed, we utilized Discord and Zoom.

Version Control

We implemented Git Feature Branch Workflow. All pull requests in Github were reviewed by another team member before being merged into the main branch.



Technologies

Front End Languages JavaScript HTML CSS
Frameworks & Libraries React React Router MUI
Database & Back End ExpressJS NodeJS MongoDB Firebase
Design Figma
Utilities Webpack Babel Postman Git
Workflow Github Trello Discord Zoom
Deployment MongoDB Atlas AWS


Links

Link to Figma Wireframes

Home Page User Profile Adopt Page
Dog Overview Research Breeds Breed Overview

Link to Engineering Journal - WOOF

We pulled our breed information from...and then we...you can use whichever API that best suits your needs.



Installation


WOOF requires both Node.js and npm to run

  1. Download the repo using git
git clone https://github.com/hratx-blue-ocean/WOOF.git
  1. Install dependencies
npm install
  1. Create a config.js file in the root directory:
  mongoURI: "{{ Your MongoDB Cluster URL here }}",

  petfinderConfig: {
    "grant_type": "client_credentials",
    "client_id": "{{ Petfinder client_id }}",
    "client_secret": "{{ Petfinder client_secret"
  },

  googleAPI: "{{ google API key }}",

  FIREBASE_API_KEY: '{{ Firebase API Key }}',
  FIREBASE_AUTH_DOMAIN: '{{ Firebase Auth Domain URL }}',
  FIREBASE_PROJECT_ID: '{{ Firebase Project ID }}',
  FIREBASE_STORAGE_BUCKET: '{{ Firebase Storage URL }}',
  FIREBASE_MESSAGING_SENDER_ID: '{{ Firebase Messaging Sender ID }}',
  FIREBASE_APP_ID: '{{ Firebase App ID }}',
  • Note: See the Links section for these services to generate your authentication
  1. Run the Webpack compiler
  • In Production:

    npm run build
    
  • In Development:

    npm run build-dev
    
  1. Start the Server
npm start

APIs

GET: /adopt

  • Description: responds with a list of available adoptions
  • Query Parameters:
    Parameter Type Description
    location string a string containing `"{latitude}, {longitude}"` or `"{5 digit postal code}"`
    distance number a number representing the distance from location in multiples of 5
    breed string a string representing the keyword for breed
    size string one of four available options: `small`, `medium`, `large`, `xlarge`.
    gender string one of two available options: `male`, `female`.
    age string one of four available options: `baby`, `young`, `adult`, `senior`
    coat string one of five available options: `short`, `medium`, `long`, `wire`, `hairless`.
    good_with_children boolean filter dogs who are good with children
    good_with_dogs boolean filter dogs who are good with other dogs
    good_with_cats boolean filter dogs who are good with cats
    house_trained boolean filter dogs who have already been determined to be house trained
    special_needs boolean filter dogs with special needs
    limit number limits the number of adoption results provided in the response (default: 5)

GET: /organization

  • Description: responds with a list of available adoptions from a specified organization
  • Query Parameters:
    Parameter Type Description
    id string a string value representing the organization id. (required value)

GET: /nearbyOrgs

  • Description: response with a list of nearby organizations based on the location and distance.
  • Query Parameters:
    Parameter Type Description
    location string a string containing `"{latitude}, {longitude}"` or `"{5 digit postal code}"`. (required value)
    distance number a number representing the distance from location in multiples of 5. (required value)

GET: /userData

  • Description: retrieves a specific user from the database
  • Query Parameters:
    Parameter Type Description
    email string a string representing the email address of the user. (required value)

POST: /userData

  • Description: creates a new user record in the database excluding authentication info
  • Body Parameters:
    Parameter Type Description
    name string a string representing the name of the user
    street_address string a string representing the full street address of the user
    city string a string representing the user's city
    state string a string representing the user's state (abbreviated)
    zip string a string representing the user's 5 digit postal code
    email string a string representing the user's email address.
    lat number a number representing the user's latitude
    lng number a number representing the user's longitude

PUT: /userData

  • Description: updates a specific user record based on the provided email
  • Body Parameters:
    Parameter Type Description
    email string a string representing the user's email address. (required value)
    name string a string representing the name of the user
    street_address string a string representing the full street address of the user
    city string a string representing the user's city
    state string a string representing the user's state (abbreviated)
    zip string a string representing the user's 5 digit postal code
    lat number a number representing the user's latitude
    lng number a number representing the user's longitude

PUT: /saveDog

  • Description: adds a saved dog to the specific user record based on the provided email.
  • Body Parameters:
    Parameter Type Description
    email string a string representing the user's email address. (required value)
    dogObj object the dog object selected by the user when clicking the favorite icon (required object)

PUT: /deleteDog

  • Description: removes a saved dog from the specific user record based on the provided email
  • Body Parameters:
    Parameter Type Description
    email string a string representing the user's email address. (required value)
    dogObj object the dog object selected by the user when clicking the favorite icon (required object)

PUT: /saveBreed

  • Description: adds a saved breed to the specific user record based on the provided email.
  • Body Parameters:
    Parameter Type Description
    email string a string representing the user's email address. (required value)
    dogObj object the breed object selected by the user when clicking the favorite icon (required object)

PUT: /deleteBreed

  • Description: removes a saved breed from the specific user record based on the provided email
  • Body Parameters:
    Parameter Type Description
    email string a string representing the user's email address. (required value)
    dogObj object the breed object selected by the user when clicking the favorite icon (required object)

GET: /breed-name

  • Description: returns 3 organizations that have adoptions of the specified breed available
  • Query Parameters:
    Parameter Type Description
    name string a string representing the name of the breed being searched for
    limit number limits the number of organizations provided in the response

GET: /breed-details

  • Description: responds with a list of breeds based on the available filters
  • Query Parameters:
    Parameter Type Description
    name string a string representing a keyword to filter the list of breeds displayed
    group string a string representing a keyword to filter for a specific breed group
    size string one of four available options: `small`, `medium`, `large`, `xlarge`.
    temperament string a string representing a keyword to filter for a specific temperament

About

A mock app that is designed to allow a user to research breeds and search for dog adoptions. Our team is comprised of 7 full-stack engineers who have each taken ownership of front-end and back-end development.

Resources

Stars

Watchers

Forks