Critter Finder
Overview
The goal of Critter Finder is to help dogs and cats find their forever home.
The problem
7.6 Million companion animals enter shelters every year, of these 2.7 Million are adopted. Unfortunately each year another 2.7 Million Animals don't find a home and are euthanized. *Source SPCA
The app utilizes PetFinder REST API.
User Stories - Sprint 2
The following required functionality is completed:
- All of the Sprint 1 User Stories
- A user should be able to use a swipe mechanic to swipe through a list of pets looking for a home. Swiping right marks the pet as a favorite. Swiping left marks a pet as not a good fit.
- A user should be able to tap on a swipe card from the pet browser view and be shown more details about the pet
- A user should be able to mark pets she is interested in learning more about as favorites and then view her list of favorite pets
- A user should be able to search by breed
- A user should see a Pet's breed on the details view
- A user should be able to see contact information about the shelter for a pet
- A user should be able to reach out to the shelter via e-mail from the details activity
- The information design should be complete for the swipe card view (a user should be able to see name, sex).
- A user should be able to see multiple images of the pet from the details screen
The following optional features are implemented:
- Allow the user to browse a gallery of pet images for the selected pet from the details screen
- Indicate how many images are available for browsing in the image gallery using a circular view page indicator
- Use scene transitions to animate the transition from a pet in the favorites list to the pet details screen. And from the the swipe card screen to the details screen.
- Give the details screen a transparent action bar and load the first pet image underneath the action bar
- Add a custom slide in from the right and out from the left animation when opening the search filter activity from the swipe card screen and back again.
- We have an app icon!
- First pass at a material color palette / theme
- Don't resurface pets the user is not interested in seeing
- A user should see a Pet's breed on the favorites view, swipe view
- The information design should be complete for the favorites view (a user should be able to see name, age, breed).
- The information design should be complete for the details view (a user should be able to see name, age, breed, size, description, contact info)
Sprint 2 - Video Walkthrough
Here's a walkthrough of the implemented user stories:
User Stories - Sprint 1
The following required functionality is completed:
- A user should be able to see a list of neary by pets available for adoption.
- User should see a list of pets and be able to like or not like a particular pet. After taking a like/not interested action, the user should see the next pet in the list
- From the pet browsing view, a user should be able to see a list pets marked as favorites
- Tapping on a pet from the list of favorite pets should show the user more details about the pet.
- User can search for a list of pets by Location, Species, Breed, Gender, Age and Size.
- User should be able to change the search criteria and see a new list of results
The following optional features are implemented:
- On first launch, the application uses the GPS to determine the current users location, turns that lat and longitude into a zip code and presents a set of pet results near the user. This was done as an AsyncTask.
- User should be able to see a list of breeds for a particular animal. This list should come from PetFinder
- User should be able to select multiple breeds, ages and sizes and see results that meet that advanced criteria
Video Walkthrough
Here's a walkthrough of the implemented user stories:
Wireframe
Here's the wireframe of implemented user stories: Please click here to see the wireframe.
Wireframe created with pencils.
Open-source libraries used
- Android Async HTTP - Simple asynchronous HTTP requests with JSON parsing
- Material Dialogs - for implementing parts of the pet search filters UI
- Permission Dispatcher - for dealing with permissions on Marshmallow
- Picasso - Used for async image loading and caching them in memory and on disk.
- ActiveAndroid - Simple ORM for persisting a local SQLite database on the Android device
- Butterknife - Remove view binding boilerplate
- Gson - streamline JSON parsing into models
- Parceler - Remove boilerplate around making model objects parcelable
- SDK Plugin Manager - Jake Wharton's SDK plugin manager.
- View Pager Indicator - Jake Wharton's View pager indicator library for our image gallery
- Circle Image View - A fast ciruclar image view
- Swipe Cards - A framework to assist with the swipe / fling animation for pet cards
License
Copyright 2016 Carly Baja, Scott Richards, and Scott MacGregor
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.