Iteration 2 User Stories

As a user of the application, ...
(Approximate point values indicated in [square brackets])

1. [30] Get updated data

  • When the app start up, if it's been 20 hours or more since data was last updated, I want the application to check with the City of Surrey's server to see if there is more recent data to be downloaded.
  • If there is new data on the server, I want the app to ask the user if they want to update the data so they can choose if now is a good time to do the update.
    • If the user does not want the data updated, then the next time the app starts up it should ask the user again if they want to update.
    • The app must only download the data if an update is available otherwise it will waste the user's bandwidth and battery.
  • I want the application to store downloaded data locally so that it can work offline.
  • I want the application to initially install with the small data set (from iteration 1).
  • Show a please-wait dialog, or a progress dialog, while data is downloading/updating.
    • I need the dialog to have some animation showing the application is working.
    • Plus it must have some way for the user to cancel the download.
    • When the download is cancelled the previously download data should still be used by the app.

2. [30] Map

  • When the application starts up, I want the default view to be a map centred on the user's current location.
  • The map should display pegs showing the location of each restaurant we have data for.
  • I want the map to allow the user to pan (move map around) and pinch to zoom.
  • I want the restaurant pegs to show the hazard level of the most recent inspection report for a restaurant.
    • Each peg must show the hazard level using a colour and an icon. i.e., icon for medium must be different than high hazard.
  • When there are too many pegs in an area, I want the pegs to be clustered intelligently.
  • I want the app to show the user's current GPS position on the map as some form of dot or icon which is distinct from the restaurant pegs.
    • As the user moves, I want the dot on the screen to update to a new location, and have the map follow the user so the display stays relevant as the user moves through the city.
  • I want the user to be able to interact with a peg to get more information.
    • Tapping on a peg should show a small pop-up display of the restaurant name, address, and hazard level of its most recent inspection.
    • The pop-up display must also allow the user to tap again to go to restaurant's full information screen
  • I want the user to have a clear way to toggle between the map screen and the list of restaurants screen (iteration 1) so the user can find a restaurant by either its location on the map, or the list of restaurants.

3. [15] Custom images / icons

  • I want the icon/image for certain restaurants to be specific to that business so that the user can quickly identify business.
    • At least 10 restaurants must have unique icons in the restaurant list screen. Suggested that these icons be the company's logo.
    • At least 5 of these restaurants should have 4 or more locations in Surrey so that the custom icons come up more frequently in the list.

4. [15] Back-button behaviour

  • Toggling between map and restaurant list view is independent of the back button behaviour
    • If a user goes from the map screen to the restaurant list screen and then pressing Android's back button, it exits the application.
    • If a user goes from the restaurant list screen to the map screen and then pressing Android's back button, it exits the application.
  • Pressing a back button (either Android's or the one on the app's screen) from the single restaurant screen takes the user back to either the map screen or the restaurant list screen, whichever the user last visited.
  • On the single restaurant screen, tapping the GPS coords on a restaurant closes the current screen and returns to the map screen, selecting that restaurant and showing the small pop-up info about the restaurant.

General

  • [10] Overall
    • Nice UI layouts; resizes to different size screens reasonably well.
    • All strings which end user may see on UI (not LogCat) are in strings.xml
    • Add a back button on the tool-bar at top when appropriate.
    • From any screen, the Android back button must do the "reasonable" thing.
    • Application flows smoothly.
  • [0] Must have good quality code (Up to 20 point deduction)
    • Good class, method, variable names.
    • Perfectly formatted code.
    • Comments on all classes (not needed inside classes, just on the class level)
    • UI must be in a separate package from the data "model".
  • [10] Correct use of Git and GitLab
    • Using GitLab issues to track features to work on.
    • Use Git/GitLab branches and GitLab merge requests
    • Correctly builds when cloned from GitLab.
    • Evidence of some use of code reviews