Skip to content

This repo is part of the interview process at Fetch for a Frontend Engineer position.

Notifications You must be signed in to change notification settings

jtheis85/fetch-a-dog

Repository files navigation

Fetch Engineering Interview

This repo is part of the interview process at Fetch for this Frontend Engineer position.

Here at Fetch, we love dogs, and hope you do too! Your task is to build a website to help a dog-lover like yourself search through a database of shelter dogs, with the hope of finding a lucky dog a new home!

Accessing the App on the Internet

Running the App Locally

  • Ensure Node.js is installed on the machine (node v20.18.0 was used for development)
  • In the directory containing the package.json file enter the following commands into a terminal:
    • npm install
    • npm run dev
  • This will build and run the dev server
  • The terminal will display a link like Local:http://localhost:5173/. Click it to open the app.

TODO

These are item that weren't explicitly in the requirements (see below), but I've identified either as issues to fix, or enhancements to make. This isn't an exhausive list. Items will be added as I run across them, and checked off and removed as I finish them.

General

  • (UX) Scrollbar color
  • (UX) Implement "root close" behavior for menu popovers, where clicking outside them dismisses them.

Login

  • (UX) Validate login form field values
    • Name length requirements and character restrictions
    • Valid email regex
  • (ERRORS) Handle login errors
  • (UX) Loading indicator for sign in
  • (UX) Handle auth expiration

Search

  • (FIX) Space between grid rows when results don't fill full page (e.g. zoom out)
  • (ERRORS) Handle API errors
  • (UX) Add filtering by age
  • (UX) Handle individual image loading state
  • (UX) Add first/last page buttons
  • (UX) Add numbered page buttons (similar to "< Goooooooogle >")
  • (UX) Add a page size option menu
  • (UX) Integrate search into querystring for link/shareability
  • (UX) Add logged in username to account menu

Requirements

Full requirements and documentation is available at frontend-take-home.fetch.com

Login and Auth

  • You first should have users enter their name and email on a login screen.
  • Then, you should use this information to hit our login endpoint to authenticate with our service
  • Once a user is successfully authenticated, they should be brought to a search page where they can browse available dogs.

Search

  • Users must be able to filter by breed
  • Results should be paginated
  • Results should be sorted alphabetically by breed by default.
  • Users should be able to modify this sort to be ascending or descending.
  • All fields of the Dog object (except for id) must be presented in some form

Favorites and Matching

  • Users should be able to select their favorite dogs from the search results.
  • When finished searching, they should be able to generate a match based on dogs added to the favorites list.
  • A single match will be generated by sending all favorited dog IDs to the /dogs/match endpoint.
  • You should display this match however you see fit.

Additional Requirements

  • Please provide a link to your deployed site and your public code repository via Greenhouse.
  • Your app should be hosted on the internet where it can be visited and interacted with
  • You should include any necessary documentation to run your site locally
  • Your source code should be stored in a git repository and hosted on the internet (i.e. GitHub)

As for everything else, you have free rein, so get creative! We strongly encourage you to go beyond the minimum requirements to build something that showcases your strengths.

About

This repo is part of the interview process at Fetch for a Frontend Engineer position.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published