Register
Submit a solution
The challenge is finished.

Challenge Overview

Our client, General Electric (GE) provides Predix - The platform for Industrial Internet of Things (IIoT), which helps to develop, deploy, and operate industrial apps at the edge and in the cloud. It securely connects machines, data, and analytics to improve operational efficiency. Among other services, Predix powers CityIQ - An open and interoperable IoT platform enabling developers and partners to build applications that drive new city services, optimize operations and improve citizens’ quality of life.

GE wants the Topcoder community to work with Predix and to create sample applications that emulate various devices interoperating with Predix services over the network. This challenge is a part of a series of Predix contests with the total prize pool over $10,000. We hope you will take time to register for Predix, read about the services they provide, and configure your environment. Other challenges in this series may use different technology stacks and approach very different problems, but all of them will utilize Predix account and different services provided by the platform.

Setup

If you have not registered already, go to http://predix.topcoder.com/ and join Topcoder Predix Community. Fill out the registration form and confirm your email address. Once completed, you will receive community welcome email with a link to register your Predix developer account.

During registration of the Predix dev account use the personal account type. Be aware that approval of the Predix account can take a few days at the Predix side. To facilitate the process, please message in the challenge forum your Topcoder Handle / First and Last Name / Email that you have used for registration of Predix account. We will pass these data to GE Predix team to speed-up the process.

Eligibility: As of now, residents of the following countries are not allowed to register in Predix, hence they won’t be able to participate in this challenge: China, Cuba, Iran, North Korea, Russia, Sudan, Syria.

Challenge Scope

In this challenge you will develop the backend for a simple proof-of-concept application, that combines together services provided by CityIQ (Pedestrian, Traffic, Parking, and Environmental data), Predix (Assets and Cloud), and City’s Open Data (Special Events and Construction) to solve (in a naive way, for now) the following problem:

Imagine, you are an organizer of a special event (e.g. a big birthday party, a festival, 10k walk/run, or other indoor/outdoor activity), looking for the optimal date, time, and location in the town. Among other things you have to pay attention to in evaluating potential possibilities, you would want to know:
  1. Where would be the best location of the event based on the vehicle / pedestrian flow on a similar day? Will it be easy to find parking for attendees?
     
  2. Are there any other events, or major road constructions already scheduled nearby?
     
  3. In case of an outdoor event, what is the microclimate at the potential site (temperature, humidity, noise, etc.)
     
In this challenge we want you to develop the NodeJS backend, to be hosted in Predix Cloud, that provides the services necessary to solve this problem. It should provide endpoints to:
 
  1. Make the search of potential event locations, provided approximate area for the search (the central point and radius around it); and optional parameters allowing to narrow down the search (assumed amount of guests, outdoor and/or indoor event, etc.). The queries and results should be stored to the Predix Assets.
     
  2. Proxy the retrieval of relevant information from CityIQ / City’s Open Data. Say, when we build the frontend, if we want to render at a map all events already scheduled in the area, without doing the actual search yet (because the actual search, especially for larger areas, even if we do it approximately, is a potentially more expensive operation). We want to be able to call a dedicated endpoint in our backend, rather than CityIQ / City’s Open Data APIs directly. The endpoints in our backend will ensure that such calls can be done in a similar way, and the response data are also presented similarly, to leverage any difference between underlying APIs, if there is any.

For your reference, feel free to check the source code of a CityIQ-related PoC app we have developed in the previous challenge. It can serve as an example on how to handle communication with various services relevant to this challenge.

Your code should follow the standard best practices (clean, clear, commented and documented; set up ESLint with AirBnB style; provide Postman collection as a part of the documentation)

As always, in case of any doubts and questions do not hesitate to ask in the challenge forum.


Final Submission Guidelines

Submit the source code, along with verification instructions and a brief demo video.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30059853