Requirements for technical work - Pasarus/FelineAdoptionAgencyMajorProject GitHub Wiki
- All Activities, and the app as a whole should be made using Material Design Guidelines
- Using the latest Android Navigation library will allow me to integrate correct navigation easily between Activities
- The home activity should display some stuff
- Cat of the month
- First 3 saved cats if signed in, if not signed in recommend 3 cats to adopt.
- If signed in also progress on your adoptions in a recycler view at the top of the page.
- An activity that allows a person to find a cat to adopt similar to Cats Protection's find-a-cat. This should be a list, probably a RecyclerView that has a MaterialCard that allows us to view some basic details and save, basic details include:
- Age
- Sex
- Name
- Location
- Cat Picture
- Each cat found on the cat finder tool should have it's own popup Activity that displays multiple details:
- Cat Picture
- Age
- Sex
- Name
- Small paragraph with some details about the cat's history (Will contain disability info if present)
- Breed
- Location
- Colour
- Disabled
- Cat Preferences:
- Likes kids
- Age of kids (Secondary, primary, younger)
- Families
- Indoors
- Other cats
- Dogs
- Likes kids
- Allow a cat to be saved
- Allow show of interest ("Adopt" button) needs an info icon that when tapped explains what that button does. Requires a user to login before process works. Pop up asking a user to login, if not.
- An activity where you can display any "Saved" cats
- When the adopt button is clicked on a cat (and logged in, if not ask to login), propose a home visit time for an admin to complete.
- The home, saved, and cat finder tool should appear on the bottom navigation bar.
- There should be a Navigation Draw which contains links to multiple activities, including the home, saved, and cat finder tool. Also it should contain a link to standalone activities:
- About us
- Help & Feedback
- Log in (Using OAuth) For administrators and users
- This will be replaced with a My Account activity after login
- Permissions for any licensed content
- Settings
- Toolbar, containing buttons to access the NavigationDraw, settings and up button.
- Administrators accounts should allow people to do specific things to update the backend database for all users.
- Add a new cat
- Approve someone after a home visit
- Approve home visit
- Fill in the details of a user so they can be approved for adoption based on their email address
- User accounts should provide people with the ability to:
- Sync Data across devices, i.e. their saved cats
- Request to adopt a cat
- View their status for approval of adoption of a cat
- The app should rely on a stable database provided by a university hosted container, the code/schema for this database should be seperate from the code for the app, but both should be in the Git Repository alongside documentation. Security of the "User" and "Admin" data is crucial.
This database should be provided by a RESTful API from a container, using Python Flask.- Replaced with firebase
- The database should be filled with data that has either been gained from PetfinderAPI or made up.
- Any used cat images should be provided with a free to use license clearly visible if required, use of the Request Kittens API may be useful here.
- The app should use the icon that has been made for the occasion
- Integration UI testing for each concievable workflow on each Activity in the application
- All testing should be done on a seperate "testing" database, no testing should be done on the "live" database, unless manually performed
- All non-UI activity specific code should have unit tests associated with it.
- Use this colour scheme for non-dark versions:
- Primary: #ff6f00 - Orange
- PrimaryLight: #ffa040 - Lighter Orange
- PrimaryDark: #c43e00 - Darker Orange
- PrimaryText: #000000 - Black
- Use this colour scheme for dark versions:
- Primary: #424242 - Dark Grey
- PrimaryLight: #6d6d6d - Lighter Dark Grey
- PrimaryDark: #1b1b1b - Darker Dark Grey
- PrimaryText: #ffffff - White
- Using the icons from @Templarian:
Colour scheme made using material.io