1. Project Overview
The EPA is a U.S. federal government agency devoted to safeguarding the environment. One of the EPA's great concerns is the proliferation 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 algorithm that will be deployed in an Android app with mapping and data visualization capabilities. 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.
2. Contest Overview
Welcome to final architecture in the series of four EPA Android App Architecture Contests. We recently concluded the design of back-end of the system which will directly interact with this front-end module. This contest will design the architecture of front-end module of the system. We have a front-end prototype for the app already in place and this contest will use that front-end to design the implementation of underlying features. As this is a large architecture, we have divided it into two parts - the scope of this first part is described below.
In this contest, we are looking for you to design the module architecture for front-end module of EPA Android App. We want you to use all the available information architecture in form of system architecture and application requirements specification to develop this module architecture. We will also provide access to back-end design that has been already being done and which will interact with this module. The front-end module is the one that will be presented to the end-user and will provide all the features of the app.
Following is the description for each of functionality of Android App front-end module:
EPA Android App Front-End Module: This module will be responsible for doing all the front-end operations. This module will not be computationally intensive but will require great UI and network performance consciousness. Please make sure to implement this in a way that provided very smooth interactions for the end-user.
- Please refer to ARS for the use cases that needs to be implemented.
- The front-end will interact only with back-end. There are other two modules on the server - data management and admin - but they do not interact directly with front-end.
- Please implement all the graphs and chart functions.
- Front-end is same for all users and both general and admin users will be able to see same set of screens and will be able to access all features of the app.
- The front-end module will receive prediction results and aggregate analysis results and it will be displayed in the device in both textual and graphical manner as shown in prototype.
2.1 Scope of the Contest
As this a big front-end, we have divided the architecture into two contests based on the Use Cases in ARS. Following is the scope of this contest:
- Please provide design for all the features on the home screen (splash screen), home map screen and all features under My locations tab.
- This will roughly cover the logic requirements from 2.1-2.8, 2.10-2.21 and 2.25.
- Please clarify on forums if you think you need to cover more cases or something should not fall in the scope.
- You are allowed to use the design from Android prototype (provided as resource) for those features which are already implemented there but you will need to provide the glue code for those features whenever required - that is you still need to provide design on how does it interact with weekend. You are also required to provide complete implementation of all those features which are not present or just mock holders in the current prototype.
- Please note that communication with back-end will be defined in this architecture.
- It is recemmonded that you intall the provided prototype on your mobile device if possible. It is an easy installation but will provide great insights to you.
3. Technology Overview
1. The Prototype has been developed in Android.
2. Following is the technology stack already used in the prototype:
- Android 4.1 - 4.4
- Google Maps Android API v2
- AChartEngine 1.1.0
3. You are allowed to add more technologies as deemed necessary.
4. Back-end will be developed in Java and hosted on Red Hat server.
5. Open source software resources are welcome, but they must have third party support services available. Please ask in forum when in doubt.
6. You are allowed to use any open source DB, data storage mechanisms for storing data at various stages.
7. Please note that the developers are not allowed to use any component from TC Catalog for this contest.
4. Process Flow and Storage Considerations
- We will use one main storage modules: Back-end storage. This storage can be file sotrage or db store or both.
- The front-end will query this store whenever the user asks for some already stored data.
- Please Remember: The front-end will only interact with back-end.
Please Note: Both the process flow and storage details are just high-level suggestion from our side. Architects are welcome and encouraged to suggest and propose any changes and updates as deemed necessary in this process flow. Also, architects are allowed to use any media for data storage like DB or files, etc. Please open a discussion in forum to clarify/confirm your ideas when in doubt.
5. Resources Provided
The following resources are available for your use. You will be able to access some of them on forums after registration while others require discussion forum request for access:
1.) EPA Android App Prototype
2.) System Design Specification and System Architecture TCUML
3.) Application Requirements Specification and Use Case TCUML
4.) Back-End Module Architecture
Please Note: In case of use case discrepancies, precedence should be considered as following: Back-end Architecture and ARS > Android App prototype and System Architecture. Please follow them and if there is still confusion, please ask in forums.