Alicia Villanueva - Project Manager
GitHub • LinkedIn
Johnathan Brennan - Project Manager
GitHub • LinkedIn
Ben Kern - System Architect
GitHub • LinkedIn
Don Vida - UI Designer
GitHub • LinkedIn
Maria Kim - UI Designer
GitHub • LinkedIn
Kristin Gadgil - Full Stack Engineer
GitHub • LinkedIn
Rob Williams - Full Stack Engineer
GitHub • LinkedIn
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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
Our team used Agile workflow for this sprint.
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.
We implemented Git Feature Branch Workflow. All pull requests in Github were reviewed by another team member before being merged into the main branch.
Front End Languages | |
Frameworks & Libraries | |
Database & Back End | |
Design | |
Utilities | |
Workflow | |
Deployment |
Link to Engineering Journal - WOOF
We pulled our breed information from...and then we...you can use whichever API that best suits your needs.
WOOF requires both Node.js
and npm
to run
- Download the repo using git
git clone https://github.com/hratx-blue-ocean/WOOF.git
- Install dependencies
npm install
- 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
- Run the Webpack compiler
-
In Production:
npm run build
-
In Development:
npm run build-dev
- Start the Server
npm start
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