Topcoder Cognitive CommunityThis challenge is a part of Topcoder Cognitive Community challenge series. Along with cash prizes, you will win Cognitive points towards the Leaderboard, and the leader at the end of the challenge series wins an all expenses paid trip to TCO17.
The placement you earn in this challenges (non-F2F) will determine how many Cognitive points will be added to your total on the Leaderboard:
1-st place = 500 pts
2-nd place = 350 pts
3-rd place+ = 100 pts
If you have not registered at IBM Bluemix already, please visit https://developer.ibm.com/sso/register?lang=en&eventid=2017_topcoder_challenge_008 to register.
RequirementsIn the previous challenges we have prepared:
- UI Prototype of the Weather Sales Performance Analytics Dashboard. It is not yet ideal, thus original designs are provided in the challenge forum for your reference.
- POC isomorphic services, which use IBM Watson services to (1) fetch historic and forecast wheather data; (2) generate mock, but reasonable, sales data; (3) upload weather and sales data to Watson Retrieve and Rank (R&R) service; (4) fetch historic and predicted sales data from R&R service. The code is provided in the challenge forum, here you can find for your reference the previous challenge, where this code was built.
In this challenge you will merge POC services into UI Prototype code and wire them to some of the UI elements.
1. Merge POC services into UI Prototype app:
- All POC services (no matter do you use them further in this challenge or not) should be moved to the UI Prototype app. They are assumed to be isomorphic already, thus you should place their main code into /src/shared/services/watson and they should work properly both when used on client side (in browser) and server side (node). If you see any issues related to this, do not hesitate to bring it up in the forum!
- All configuration files should be moved to /config folder. Those related to generation of mock data, etc. you put into some subfolder, e.g. /config/mock-data, those specifying various run-time constants you properly merge into existing config files of UI Prototype app.
- All documentations about how to use and configure these POC services you update appropriately and also merge into the UI Prototype app. You can place detailed docs into /docs folder, and reference them from the main README.md. Key staff absolutely necessary for deployment and execution of the app, should be, at least briefly, outlined in the README.md, so that the first time user of the app does not feel himself lost, and is able to setup and run the app in the default configuration.
- Any other components that are necessary for POC services to work, should be also properly merged into the UI Prototype app.
2. Update default configuration for generation of mock sales data:
- Take this list of US cities by population: https://en.wikipedia.org/wiki/List_of_United_States_cities_by_population. It will be cool if you can add entire list into config. If not, the first 25 cities will be fine.
- Add more sale items, to have at least 10 in the config (e.g. sun cream, sun glasses, soft drinks, beer, rain coat, sweater).
3. Wire the following UI components / functionality to the services:
- Map. Circle on the map should display locations we have in our data. The size of circle should correlate with average sales there (the average within the last / next week / month - depending on the weekly / monthly switch). The color of circle should depend on the sales level forecast for the next week / month period: greenish if it is within 0% - 10% from the average; orange if it is within 10% - 20% from the average; red if it is beyond 20% from the average (exact levels should be exposed via configuration).
- For the red / orange circles in the map, you should render corresponding alert messages in the main area of the dashboard, and under the map in the full screen view; also you should populate corresponding suggestion screens with basic relevant information. We don't expect, that you will manage to fill it all with real data, but at least render in the basic staff: location, severity of the alert, the expected change in sales volume, etc. Keep hard-coded values for other params, which you cannot fill in now.
- The historic / forecast sales data chart in the sidebar is in scope. Please, be sure to check it is appearence in the original design. It is slightly different from what we have in UI Prototype now, and you are expected to correct it.
For your reference, here are screenshots showing what is supposed to be wired up in this challenge:
Please follow our usual coding standards. Do not introduce lint errors, appropriately comment the code, use babel-plugin-react-css-modules and/or react-css-themr for styling, etc. In general, remember that other people will work on your code afterwards, so keep it clean, well-structured and understandable. You should work out of the latest commit in the develop branch of UI Prototype repo. There is currently a slight problem with running it out of the box, a quick workaround is mentioned in the forum. Please, don't include that fix into submitted code.
P.S.: Should the challenge scope look too large to you, please remember that it is the same large for everybody, so the chances are that nobody will manage to make it all 100% perfect. Specifications above describe the direction we want to move, and the length we want to move in this challenge. Though, if you can make part (3) only partially, we still can be happy with your solution, as it is still moves the project in the right direction.