Challenge Overview
Note - We are currently running a UI prototype F2F challenge so the provided prototype in challenge assets will be updated within the next day or so (as and when the F2F completes). There are no major changes from an API integration standpoint though so it should be easy for submitters to switch to new prototype as soon as it's made available.
Welcome to the SunShot - SolarActionNetwork - Prototype Backend Integration Code Challenge.
As part of earlier challenges, we've built a prototype (provided in challenge forums) which is fully responsive on Desktop, Tablet and Mobile layouts. Now, we want to implement some mock APIs and bring this prototype to life.
Key Considerations
-
The prototype uses hardcoded data everywhere. We do not have access to client APIs so we want to mock them using JSON files. No input data should be hardcoded on any screen. The app should be written in a manner so that it uses wrapper APIs which currently read data from a JSON file but later can be replaced with actual endpoints which would return the same JSON data from the server.
-
Feel free to define the JSON format that’s best suited as per the form
-
Technologies - node.js, Angular.js
Landing Page
- When the User launches the application, they are taken to a landing page where a map populates with the location of the User. The location Pin is a graphic that looks like a solar panel. If the 'Auto' flag is true, the location address and GPS coordinates are determined using a location service and shown in the right section.
- The user should be able to search any location (/searchLocation endpoint - GET request) by entering an address in the 'Search Location' box and hitting Enter should plot the location on the map and show it's GPS coordinates in the right section.
- The Contact Us (/contactus endpoint - POST request) form should be able to capture all the fields and send an email to a configurable email id.
Get Solar
- Make the $1500 value configurable
- The chart on the left should call the /solarChartData endpoint (GET request) which takes an argument of a JSON file that defines each category and it's corresponding value.
- Make Lorem Ipsum text on the left as confgurable as SolarSavingText
- Make Lorem Ipsum text on the right a configurable as SolarSavingSignupText
- Address Line 1, Address Line 2, State, Zip should be auto populated based on the location from landing page.
- Clicking Next hits /SolarAddressData (POST request, save to a JSON file) and takes the user to the ‘House Owner’ section
House Owner (Form B)
-
Capture the values of all fields.
-
Clicking Next hits /HouseOwnerData (POST request, save to a JSON file) and takes the user to ‘Electricity Info’
Electricity Info (Form C)
-
Capture the values of all fields.
-
Clicking ‘AUTHORIZED’ opens the Utility Account Organisation modal. The user needs to fill
-
Name
-
Signature (either hand-dawn) or uploaded as an image
-
-
Clicking Okay hits /ElectricityInfo (POST request, save to a JSON file) and takes the user to ‘Rental Agreement’ screen
Rental Agreement (Form D)
-
Capture the values of all fields.
-
Clicking ‘Agree’ opens the Solar Rental Addendum modal. The user needs to fill
-
Name
-
Signature (either hand-dawn) or uploaded as an image
-
-
Clicking okay hits /RentalAgreement (POST request, save to a JSON file) and takes the user to ‘Join Solar’ screen
Join Solar
-
All data on the left must be read of a JSON file and exposed via an endpoint such as /JoinSolarBenefits (GET request)
-
-
Capture the values filled by user in the form on the right side
-
When the user hits ‘Agree’, hit the /JoinSolar (POST request - save data to a JSON file) and an email must be triggered capturing all the form element values filled by the user and sent to the user for reference. The email template must be kept configurable.
Off Grid
-
Remove all hardcoded data and read it from /OffGrid (GET request reading from a JSON file)
-
Device (Mobile Solar Charger, Portable Solar Generator, Mini Solar Station)
-
Rating
-
Price
-
Discount
-
You Save
-
Specifications
-
Image
-
Invest
-
All data on the left must be read of a JSON file and exposed via an endpoint such as /InvestmentBenefits
-
Clicking ‘Pay’ - Capture all fields and hit the /Investment (POST request) to save the captured data to a JSON file
-
Clicking ‘Pay’ must also trigger an email capturing all the payment amount filled by the user and sent to the user for reference. The email template must be kept configurable.
Final Submission Guidelines
-
Submit the complete source code as a zip file
-
Deployment Guide must contain all deployment and verification instructions. Include instructions on how to deploy to Heroku
-
Deploy the app on Heroku and provide the Heroku URL as part of your Deployment Guide
-
Submit a demo video of your submission
-
The winner will be asked to merge/ commit his code on our Git repo.