Challenge Overview

Welcome to "Aerohive Responsive Demo App - Node.js Server" Code Challenge. In this challenge, we need your help to create the Node.js server for our new Aerohive demo application that will be able to demonstrate API calls of our products for a retail clothing store.

Background Overview
Aerohive believes in a connected experience. Aerohive delivers an open mobility platform that simplifies and transforms the Connected Experience, through information, insights, and applications. Aerohive's Connected Experience is built on three core solutions that unlock the potential of mobility, and make networks easier to design, deploy, and manage:

Cloud Networking
Unified management designed to simplify administration with enhanced visibility and control, smarter troubleshooting, and flexible deployments through public, private, and on-premises solutions.

Great Wi-Fi
A fully distributed control architecture increases speed, scale, and resiliency, providing a foundation for connectivity that is supported by access layer switches and branch routers.

Applications & Insights
Business and IT applications that increase engagement and fuel business intelligence, powered by APIs, big data, and a partner ecosystem.

Importantly as a result, Aerohive has uniquely been able to create a rich and growing set of open RESTful APIs and a development platform to provide a foundation for Apps that showcase key insights and analytics via data collected while moving across the network on users and device behaviors and enable the ability to enact on that behavior. This is where developers come in! We love developers and encourage the very best and innovative Apps to grow on our platform and in return get visibility to over 30,000 end customers worldwide!

For this challenge we will be exploring a responsive demo for a retail clothing customer. The demo will contain three different Applications that our retail clothing store owners use. Although there will be a lot more functionality for each of these three APPs that will need to be explored, we are only focussing in on three specific use cases for this design challenge. 

Primary Goal
We are looking for you to help us integrate the Node.js server with the UI Prototype we developed, into a web application that is able to demonstrate calls to Aerohive API and real time web socket communication.

Competition Task Overview
The main task of this competition is to integrate the Node.js server with the UI Prototype.

Requirements
Node.js server
The server is implemented using Node.js.
It uses express server, over HTTPS. The server will allow only authenticated users to access the API and connect to the websockets.
The communication with the client will be performed using REST API calls and web sockets (socket.io).
The server saves a few types of entities in a database (Mongo DB).
The server should be hosted on Heroku, so please deploy it to Heroku.

Client
The server will serve the HTML application, which will act as the client.
The client application will be developed using the provided UI Prototype.
The client will use the server's REST API to retrieve the needed information from the server and will use web sockets in order to be alerted for the 3 types of notifications: VIP notifications, store surge and geofencing.

Specific requirements:
We want to see all the alerts working through web sockets. The server will register to Aerohive using a Presence Webhook and will receive presence data in a POST request. The server will then process this request and send, as appropriate, 3 alerts to the client: VIP notifications, store surge and geofencing.

In order for the above notifications to be relevant, we want the minimum functionality to be working. This means that:
- for VIP notifications, the application will need to allow the user to associate devices to VIP users
- for store surge, the application will need to allow the user to configure the store surge settings
- for geofencing, the application will need to allow the user to add new devices in the geofencing area

The authentication and authorization can be mocked, as in the prototype, or it can be deactivated.

Please don't remove pages or functionality, even if you don't use them. Just deactivate them, or leave them not working.

Resources Provided
Node.js server: https://gitlab.com/aerohive/webApp/tree/30054195-serviceLayer
UI Prototype: https://gitlab.com/aerohive/prototype
Storyboards can be found in forum, if needed.

Final Submission Guidelines

- Upload documentation for how to run your submission
- A video of your working solution is required
- Upload all your source code as a zip for review
- Provide deployed application in Heroku
- The winner will be required to make a Pull request in the branch that will be given later.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30054421