Key Information

Register
Submit
Status: ‌Cancelled failed screening

Challenge Overview

Project Overview

The endowment portal is an informational endowment specific portal where endowment managers can login to see how their investment is performing. It gives an overview of the money invested and carbon impact of those investments.

Challenge Overview

In this challenge, you are building a web application to allow endowment users to manage their investments.

Challenge Requirements

You will use MEAN.IO technology stack :

  • Express.JS 4.0

  • MongoDB (latest stable version)

  • AngularJS

  • Node.JS (latest stable version)

  • Nginx (as reverse proxy)

Model Definition

  • The models are presented in this ERD diagram

  • You can add more models as needed, and suggest improvements  to the suggested ERD.

  • Roles : in this portal only Endowment and Admins can login. Installer and Borrower may be roles down the road. Your solution is preferred to be flexible to add more roles in future.

Pages Requirements

Login Page
  • The page will display login form.

  • Option to reset password (forgot password?)

  • User cannot register in the portal, can only be added by admins.

  • If logged in user’s role is endowment, redirect user to Portal Landing Page, otherwise (admin), redirect user to Admin portal landing page.

Endowment Landing Page
  • We have a UI Prototype for this page provided in challenge forums.

  • The page has 5 widgets :

    • The calculation of the top 4 widgets are provided in Excel Sheet (file attached in challenge forums)

    • The Total System Deployed widget represents number of systems installed for the logged in Endowment

      • Use google maps for the map widget.

      • Markers represent installed units.

      • Clicking on a marker should show an information popup about the unit.

    • All charts in all widgets display stats per month in the x-axis.

Admin Landing Page

The page will have navigation/tabs between 4 sub-pages (by default systems page is displayed):

  • Endowments Page

  • Installers Page

  • Borrowers Page

  • Systems Page

Endowments Page
  • This page display table of Endowments

  • User can filter table using Endowment fields

  • Each row in table will have actions :

    • view - take user to Endowment Details page

    • edit

    • delete - user must confirm before processing

  • There will be option to add new endowment

    • the endowment to be added, it must be an existing user. Or you can improve UX and allow to create user and endowment in same call if the user to be given Endowment role does not exist in system.

    • It can be a hidden form that appear when user select the option.

    • Same form can be used to edit Endowment

Endowment Details Page

This page will display the following information :

  • Endowment information

  • Table of borrowers

    • row will display the borrower info

    • there will be option to add new borrower

      • It can be a hidden form that appear when user select the option.

      • Same form can be used to edit record

    • each row will have actions :

      • edit

      • delete - user must confirm

      • view - take user to Borrower detailed page

Installers Page
  • This page display table of Installers

  • User can filter table using Installer fields.

  • Each row in table will have actions :

    • edit

    • delete - user must confirm before processing

  • There will be option to add new installer

    • It can be a hidden form that appear when user select the option.

    • Same form can be used to edit action

Borrowers Page
  • This page display table of Borrowers

  • User can filter table using Borrower fields

    • For Endowment, you need to display Endowment.name instead of ID for better UX, but filtering will use the ID of the selected Endowment.name

  • Each row in table will have actions :

    • view - take user to Borrower Details page

    • edit

    • delete - user must confirm before processing

  • There will be option to add new Borrower

    • It can be a hidden form that appear when user selects the option.

    • Same form can be used to edit Borrower

Borrower Details Page

This page will display following information :

  • Selected borrower information

  • Table of loans of selected borrower

    • view - take user to Loan Details page

    • edit

    • delete - user must confirm before processing

  • There will be option to edit borrower details in this page.

Loan Details Page

This page will display the following information :

  • Selected loan information

  • Table of loan payments

    • Filtering will be available by payment date

    • there will be options :

      • edit loan payment

      • delete - user must confirm

Systems Page
  • This page display table of Systems

  • User can filter table using System fields

    • Use better display for foreign keys, the ids won’t be useful for filtering as user won’t understand who belong to these ids, so display name or combination of fields from the foreign key table for better UX.

  • Each row in table will have actions :

    • view - take user to System Details page

    • edit

    • delete - user must confirm before processing

    • foreign fields must be linked to it’s detailed pages.

  • There will be option to add new System

    • It can be a hidden form that appear when user select the option.

    • Same form can be used to edit action

  • There will be option to submit new “System Performance” information by allowing user to upload CSV file.

    • Sample CSV file is provided in challenge forums.

System Details Page

This page will display detailed information of each of following models :

  • Selected System

  • Associated Installer

    • There will be option to update association (change installer)

  • Associated Borrower

    • There will be option to update association (change borrower)

  • Table of System Performance

    • There will be option to allow user upload CSV file for new system performance

    • Table will have actions to delete system performance (user must confirm before processing)

Users page
  • This page allow admin to manage users in system :

    • add new user

    • edit existing user

    • update roles  (admin or endowment roles for now)

General Note

  • All pages with tables must support pagination, pagination can be done at client side.

  • Instead of displaying foreign key in tables, retrieve the ‘name’ field and link it to the foreign key dedicated details page.

  • All pages must be responsive

  • Provide a readme file for details about deploying the application, configuring it, and testing locally.

Heroku Hosting

The application will be hosted in heroku. You must test your solution in Heroku and provide required scripts and instructions to deploy there.

Folder Structure

Root directory     

  • env-sample (this will be a sample of .env file)

  • app.js

  • models

  • views

  • controllers

  • public         

    • css

    • js

    • i        

  • .gitignore

  • config/ folder

  • READ.md

  • anything else needed.


Final Submission Guidelines

Deliverables

  • a git folder with same structure as outlined above.

  • A readme.md file detailing all information needed to setup and run the admin web dashboard. Use github flavored markup text. It should be part of the git folder submitted

  • text file with any notes to reviewer.

  • You don't need to submit a word document for deployment guide.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30049208