Challenge Overview
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 second assembly in the series of five EPA Android App Assembly Contests. Each contest will run after the other and will be using the output of previous contest to build further. We recently concluded the development of the data management backbone for the system which will receive data from admin website. We also concluded the architecture design of the admin website module. This contest will develop the admin module of the system. We have a front-end prototype for admin module already in place and this contest will interface with that front-end to complete the implementation of underlying features.
In this contest, we are looking for you to develop the module assembly for admin website module system 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. We will also provide access to the admin website front-end that has been already developed and which will interact with this module. There is one update required to admin website which will be done as part of this module. . Finally, we will provide recently designed data management architecture and also the corresponding assembly code if required. The admin module is responsible for uploading all data to the system, provide configuration details to back-end and display results summary from the application to the admin - details of each function is provided later.
- Asking questions early and getting feedback is very important for the success of this competition.
- Ask questions if you feel anything is confusing, or if you have any questions on the provided resources.
EPA Android App Admin Website Module:
This module will be responsible for doing all the admin operations. This module will not be computationally intensive but will require great i/o and network performance consciousness. Please note that upload performance is the key for this module. So, please make sure to include all possible optimizations so as to make this a very efficient module.
- Please refer to Admin Module Architecture for all the use cases that needs to be implemented.
- The admin module will upload the data and store it in temporary folder. The data management module will use this data from temporary folder.
- The admin module will also interact with the back-end for sending configuration details.
- The admin module will receive prediction results and aggregate analysis results and it will be displayed in the front-end.
- We will provide you the back-end architecture to provide an idea of what kind of data will be received by admin related for prediction and aggregate analysis and how it needs to be displayed. Please ask as many questions as you need for getting clear idea on this. This is also covered in the admin module architecture. Whenever there is a confusion, please follow the architecture or ask in forums.
- Please read carefully: There is one feature which is not available in current front-end prototype. Please refer to 2.33.1 Upload Image(s) Activity > 2.33.1.1 Provide URL for bulk upload. This needs to be implemented as part of this module. The front-end will have a new text box as an option to current upload function. The admin can enter a url into this box and once the admin hits upload, the admin module will just send the url to data management module. The data management module will then fetch the data from the url. The admin module architecture already has this but mentioned again so as not to miss this.
Security Constraint
Please note that we want to use HTTPS protocol for the admin website. The current Admin architecture and webstie protoype implementation does not cover this. Please make sure to cover this in your implementation.
3. Data Details
We have two types of input data:
- Image Data : GeoTiff images which has geo-encoded information
- Text Data: Excel files containing data (both xls and xlsx formats) and dbf files containing metadata.
The data is in very large amounts.
4. Notes from Architect
- This assembly will provide all classes in all TCUML class diagrams. The classes have been documented there at design-level in the TCUML.
- The admin website pages are already created and several functionalities are already implemented. The assembler also needs to provide the glue code between the pages and the new provided views (new and updated views are shown in the "Main Class Diagram" in the views class). For each functionality that is not already implemented a sequence diagram is provided.
Some points to consider:
Upload images from url
There is a completely new requirement to allow the admin to provide an url in a text box and when a button is clicked the system will upload images from that location. For this requirement the assembler will also need to update the necessary page in order to add the new controls.
Use MySql instead of SQLite
Currently Django is configured to use SQLite to store data like user accounts. The assembler should configure Django so that it uses MySql 5.7 database instead of SQLite.
Support for uploading tif files. Currently the admin prototype supports uploading of tiff files but it does no have support for uploading tif files. The assembler needs to add support for uploading tif files.
Update views.view_aggregate_data_analysis() and AggregateData
AggregateData object will need to be updated by the assembler to mimic the AnalysisData object from backend architecture. views.view_aggregate_data_analysis() will also need to be updated to properly populate the AggregateData object.
5. Technology Overview
- Python 2.7.6
- Django 1.6.1
- MySQL 5.7: http://dev.mysql.com/
- MySQL Connector/Python 1.2.2: http://dev.mysql.com/doc/connector-python/en/index.html
- Requests 2.3.0: http://docs.python-requests.org/en/latest/
- Linux
- PIL 1.1.7 http://www.pythonware.com/products/pil/
Please note that the developers are not allowed to use any component from TC Catalog for this contest.
5. Process Flow and Storage Considerations
Please follow the Architecture Design completely for process flows and storage.
6. Resources Provided
The following resources have been provided in the forums. You will be able to access some of them on forums after registration while others require discussion forum request for access:
1.) EPA Admin Website Module Architecture
2.) EPA Admin Website Prototype (Please note: We have hosted the front-end on a server and it is accessible through url. Please request access in forums and we will mail you the details.)
3.) EPA Android Data Management Module Assembly
4.) EPA Android Back-end Module Architecture .
5) System Design Specification and System Architecture TCUML
6.) Application Requirements Specification and Use Case TCUML
Please Note: In case of use case discrepancies, precedence should be considered as following: Admin Website Architecture and Data Management Architecture and Assembly and Back-end Architecture > ARS > System Architecture. Please follow them and if there is still confusion, please ask in forums.
Final Submission Guidelines
We want you to submit the following deliverables:
- Complete code as required in assembly spec.
- A complete and detailed deployment guide explaining how to deploy the application including configuration information.
You can refer here to know more description on the templates and other details related to above mentioned required documents.