The Environmental Protection Agency (EPA) has asked TopCoder to build an Android app that will inform local and federal policy makers about the proliferation of a type of water pollution called cyanobacteria. The app will display past and current data about cyanobacterial concentrations and show predictions based on an algorithmic model that is being developed separately by TopCoder.
The EPA is a U.S. federal government agency devoted to safeguarding the environment. One of the EPA's great concerns is the profileration of cyanobacterial harmful blooms (cyanoHABs) in the nation's lakes. The following resources provide information on what cyanoHABs are and how they threaten the environment.
The TopCoder project on cyanoHABs aims to develop an Android app with mapping and data visualization capabilities that will incorporate an algorithmic prediction model. The app will inform local and federal policy makers about locations where bloom events are likely to occur, allowing them to concentrate their efforts in those areas. The algorithmic model does not exist yet. It will be developed in a separate track that culminates in a Marathon Match, which is not in scope here. In this contest, we are only conceptualizing the Android app and the associated server software.
The EPA's expectations for the app are described in the attached questionnaire. Note especially the antepenultimate section, "Wish list", containing a list of required features.
To help the conceptualization process, we ran a Studio contest to develop visual concepts for the user flow. The results are attached. These visual concepts are not precise definitions of the user interface. They are intended to guide you in documenting the business requirements for the app. The winning conceptualization will serve as the basis for wireframing the complete app, and the production storyboards will be developed after that.
We would like to combine the best ideas from each concept. Note the following features of concept A:
- the main UI layout with the idea of marking locations on a map for later review
- allowing the user to select satellite images which are placed side by side for comparison
- displaying a line chart of cyanobacterial concentration over time at a given location
- superimposing line charts from different locations for comparison
We are interested in the following idea from concept B:
- varying the size of location markers to reflect cyano levels (screen 01)
- showing a thumbnail of an alternate image prior to download (screen 05)
The following idea is interesting in concept C:
- a live feed of new events (screens 02, 03, 04)
You may propose additional ideas of your own.
We also want to develop an admin website in parallel to the app and need to include the flow for that in the conceptualization. The admin website is not described in the questionnaire.
The main requirements for this website will be:
1.) It will be a single page simple admin module
2.) It will be mainly used to upload the data that will be used for prediction
3.) It can also be used to edit/remove any uploaded data or the data pushed by the app users.
4.) The module will interact with the same data source as used by the mobile app.
We envision this module as a separate web page instead of part of mobile app backend as the data uploading could be large and time consuming. Btu if there are ideas which could make this module a part of mobile backend and be efficient to operate, you are free to present them.
The mobile app will support Android versions 2.3 and up. We are targeting mid-sized, mid-level mobile phones like the Nexus 4, which has the following screen specifications.
- 4.7 inches (12 cm) diagonally
- 1280 x 768 pixels
These are the minimum screen dimensions we want to support. The interface will be designed accordingly.
The specifications for the data server are currently unknown. We expect that any software libraries used in developing the server software will be available at no cost under a liberal license that allows unrestricted commercial use.
The following documentation is provided in the forums: