Challenge Overview

Project Overview

The Solar Retina is a software platform that provides real-time intelligence of total “behind-the-meter” solar PV (Photovoltaics) generation on the distribution system. Using crowdsourced solar generation data from actual PVs on the distribution grid, we provide superior distributed solar generation analysis

Challenge Overview

In this challenge are building a Ruby on Rails frontend web portal for Solar Retina system.

Challenge Requirements

Admin Web Application

  • The admin web application must be used as base code for your work in this challenge.

  • The admin portal should be accessed from /admin (i.e. http://<solar-retina-map-domain>/admin) and end user portal should be accessed from root path (i.e. http://<solar-retina-map-domain>/)

  • You can view the specs of the admin web application here.

  • The existing Admin application is provided in challenge forums. It has all the models needed in this challenge. You can also reuse some code to build the controllers for the frontend pages in this challenge.

Required Pages and Backend logic

  • Login Page

    • The page should share same logic implemented in admin portal.

  • Forgot Password

    • It should be on the same Login page, the page should be changed to display only fields needed to forgot password.

    • Email should be sent to user with reset link.

    • The reset password link will take user to the same login page but with fields to set new passwords.

    • Once user set new password, return user to login page or auto-login the user.

  • Map Page

    • The page will use google maps :

      • Create custom map with wards for Washington DC.

      • The map link should be configurable so we can load different custom map in the future.

    • Search box will use google places auto-complete feature.

      • Predictions should be retrieved and populated programmatically in the autocomplete box.

    • Based on selected place, lookup the locations in Location table that falls within the selected place location and display them on the map.

    • Hovering over a marker will display a tooltip with location id and maximumOutput value (02-3_Map_PV System_Mouse hover.png)

    • Site Data :

      • We will have the ability to view Location/Site data as in (02-6_Map_Clicked PV System.png) and (05-3_Area Statistic_Expand.png).

      • We can view data for single selected site or multiple selected sites.

      • Clicking on a marker will open up a window modal (02-6_Map_Clicked PV System.png)

        • Refer to (Single Site Data) section in this document for instructions how to render data in Single site data window modal.

          • Site Id corresponds to uniqueid field in Location table.

          • Total Capacity corresponds to maximumOutput field in Location table.

          • Wi corresponds to instantaneousPower field in LocationData table.

          • ti corresponds to dateTime field in LocationData table.

          • ci corresponds to maximumOutput field in Location table.

        • Filtering data by custom data or by Day/Week/Month/Year must be fully functional in all site data popups.

      • For multiple markers site data modal (05-4_Area Custom Time Period.png) :

        • Refer to (Multiple selected systems) section in this document for instructions how to render data in Single site data window modal.

          • Site Id corresponds to uniqueid field in Location table.

          • Total Capacity corresponds to maximumOutput field in Location table.

          • Wi corresponds to instantaneousPower field in LocationData table.

          • ti corresponds to dateTime field in LocationData table.

          • c corresponds to maximumOutput field in Location table.

        • Filtering data by custom data or by Day/Week/Month/Year must be fully functional in all site data popups.

      • The document describes the calculations in details, if there is anything not clear, please ask in the forums.

    • Note that user can use Ward to select multiple sites/locations, or using zip code, or by using “Draw Area” option in the menu.

    • Top Right Flyover menu :

      • Wards

        • Based on selected ward we will display summary of production produced by the installed sites under that selected ward as in (06-4_Ward Statistic.png)

      • Play

        • This option will show a heatmap of markers that represents generation over time. in such a scenario, each PV location would be represented by a dot or heat map dot (marker) that would expand and contract relative to the amount of energy being produced. Default movie mode should cover 12 hrs, but there should be a drop down of options as indicated on the design slides.  User should be able to specify time frame for the animation.

      • Zip code

        • It should be valid US-zip code. Use this regex

        • Using the input display markers that fall within the provided zip code.

        • The result will look like this : 07-4_Zip Code Selection_Result.png

    • The statics in the following screenshots are calculated same as documented in (Multiple Site Data) section in the calculations document mentioned earlier.

      • 06-4_Ward Statistic.png

      • 07-4_Zip Code Selection_Result.png

      • 05-2_Area Statistic_Expand.png

    • Sending email, Exporting and Printing should be implemented.

General Notes

  • Provided in challenge forums sample data.

  • All screens must be responsive (desktop and mobile).

  • Default User : Create a script to insert a new user with ‘admin’ role.

    • username : admin

    • password : admin

  • Build : Use Rake for build

  • All sensitive, environment dependent information should be configurable.

Folder Structure

We will follow Ruby and Rails recommended folder structure :

  • app/   -  Contains the controllers, models, views, helpers, mailers and assets for your application. You'll focus on this folder for the remainder of this guide.

  • bin/   -  Contains the rails script that starts your app and can contain other scripts you use to setup, deploy or run your application.

  • config/   -  Configure your application's routes, database, and more. This is covered in more detail in Configuring Rails Applications.

  • config.ru  -   Rack configuration for Rack based servers used to start the application.

  • db/   -  Contains your current database schema, as well as the database migrations.

  • Gemfile and Gemfile.lock - These files allow you to specify what gem dependencies are needed for your Rails application. These files are used by the Bundler gem. For more information about Bundler, see the Bundler website.

  • lib/  -    Extended modules for your application.

  • log/   -  Application log files.

  • public/ -     The only folder seen by the world as-is. Contains static files and compiled assets.

  • Rakefile -     This file locates and loads tasks that can be run from the command line. The task definitions are defined throughout the components of Rails. Rather than changing Rakefile, you should add your own tasks by adding files to the lib/tasks directory of your application.

  • README.rdoc -     This is a brief instruction manual for your application. You should edit this file to tell others what your application does, how to set it up, and so on.

  • test/     Unit tests, fixtures, and other test apparatus. These are covered in Testing Rails Applications.

  • tmp/     Temporary files (like cache, pid, and session files).

  • vendor/     A place for all third-party code. In a typical Rails application this includes vendored gems.

Abstracting

Please make sure to create mixin to include the common code/functionality.

Documentation

Because other programmers will be working with your code, and incorporating it into their projects, all functions must be documented in detail in the code (TomDoc preferred).

Coding Standard

Follows coding standards listed here:

https://github.com/copycopter/style-guide

Readme

Provide a detailed readme file using Markdown language with following information :

  • Overview

  • Setup Prerequisites

  • How to set up (locally)

  • Verification steps

Please note, we're judging this competition not just on the code, but also on the quality of the documentation, and ease of use.



Final Submission Guidelines

Deliverables

  • All source code that implemented the requirements.

  • README file.

ELIGIBLE EVENTS:

2015 topcoder Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30048722