Register
Submit a solution
The challenge is finished.

Challenge Overview

We are giving out bonus payments to every participant that submits and has a score +80. Thus, if you submit and you don't win but your score is +80, we will still pay you a bonus for your efforts.

Project Overview

National Solar Tour would like to build a system to automate tours and manage members.

Challenge Overview

In this challenge, you are extending the current admin web application to have a frontend pages for end users : Attendee, Host and Organizer.

UI prototype is provided in the challenge forums and you will use it for frontend pages.

Challenge Requirements

You will use following technology stack :

  • Yii PHP Framework

  • MySQL

  • AngularJS

  • Apache web server

Admin web application

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

The existing Yii Admin application is provided in challenge forums. It has all the models needed in this challenge.

You can also reuse some code to serve the frontend pages you are implementing in this page.

Apache Routes/Alias

You need to provide apache configuration to allow accessing the pages as follow :

  • The user/frontend pages should be accessed from the root path i.e. http://<national-solar-tour>/

  • The admin pages should be accessed from /admin route i.e. http://<national-solar-tour>/admin

Required Pages and backend

General Notes
  • The application will use google maps.

  • Popup for forms, success, confirm, sharing, fail, error actions should use same styling.

  • All pages must be responsive.

  • We have exactly ONE tour in this challenge, this is “20th National Solar Tour” with 4 Tour groups, each group represent one of the weekends in a specific/given month (weekend = 2 days).

    • Your submission should show how to use admin to create the tour, tour groups, and how to show the frontend reflecting the tour created.

    • It also should show how to configure the frontend application to load the created tour.

Navigation and Top section of the pages
  • The landing page is accessed from “20TH NATIONAL SOLAR TOUR” menu item.

    • Prototype is showing “19th National Solar Tour” but we are changing it to be “20th”.

  • All other items in the dark menu bar and top of it are placeholders (dead links), and search bar won’t do anything.

Landing Page
  • HTML Page

  • The page will load the configured tour id.

    • Tour title, dates in pick list, and markers in the map will be loaded from the retrieved tour and associated entities.

  • The pick list will show list of dates of the loaded map, each date represents a single day in the tour group.

  • The map will show markers of the selected date in pick list.

    • Changing the date in pick list will reload the map with pickers of that tour group.

  • The content below the map can be hard coded.

  • Sharing should be implemented and functional.

  • “Host My Home on a Tour” Button :

    • If not logged in, show register form

      • Change title of register popup to User Registration

    • If logged in, show the pop-up for registering as a host.  Closing the window keeps you on the same page.

      • The registration as host popup is the one in /#/HostMyHomeOnATour when clicking on “I want to help on the tour” button.

  • “Sponsor a Tour” button :

    • Change button text to “Organize a tour”

    • Clicking on the button will open up a popup form to request to become an organizer.  So a contact form that gets sent to the admin. Fields:

      • Name

      • Phone

      • Email

      • Address

      • Comments

    • Add a page in admin web application for admin to view list of organizers submissions to review it (approve/deny).

    • Email should be sent to Admin about new submission.

Login Functionality
  • HTML Page

  • Successful Login will keep user on the same page the user was before login.

  • Forgot username link

    • Clicking on it updates the div to show text field “Email” and “Submit” button.

    • Email should be sent to user with information about his/her username.

  • Forgot password link

    • Clicking on it updates the panel will open this page.

    • Email should be sent to user with reset link.

    • Reset link will allow user to set a new password.

      • The page to reset password should be same as Forgot password page with two fields for new password and confirm password.

  • Logout should be functional.

Register
  • HTML Page

    • Clicking on register will open up a modal.

    • Change form title to “User Registration”

  • All fields are required.

  • Add username field to the registration form.

  • Welcome email should be sent to user after completing registration.

  • No activation required.

 

Volunteer Form
  • HTML Page

    • Clicking on “Volunteer” button will open up Volunteer form.

  • This works as contact us form.

  • Add a new table to store Volunteer submissions.

    • It will be associated with tour. In this challenge we have exactly one tour.

  • Update admin backend to have a page to view volunteers :

    • Page will show table of volunteers with all data.

    • Add option to contact volunteer (send email).

  • Send emails to admins about the submission. This email should go to the local organizer. Admin is the default if no local organizer.

  • Changes to Form UI and content:

    • take the "ing" off "sponsoring",

    • move "have a booth" to it's own checkbox,

    • change "participate in an event" to "help at a tour event",

    • add "help at a tour site",

    • make details "additional details"

    • remove "comment".

Map My Tour Page
  • HTML Page

  • Button: I want to help on the tour

    • Show Volunteer pop-up

  • Button: Design my tour

    • Pop the Filter Site dialog

      • Change dialog title to Design my Tour

      • Change dates checkboxes to multi-select box

      • Change button text to “Go”

      • “Types” and “Technologies” should be loaded from lookup tables.

      • Dates will be loaded from the tour groups dates.

      • The times can be hard coded.

      • Searching will only search against the locations of configured tour id.

    • Takes you to /#MapMyTour Filter Search page (#2D)

  • The text above/below map are hardcoded.

  • Button: Filter Site Button

    • Remove this button.  Now pops when you click Design my Tour

  • Filter Site result :

    • Button: Build Custom Tour

      • Change text to “Send Me My Tour”

      • Pop contact form in Send Email Page (/#/CreateMail)

        • Pre-populates user’s email, subject is “Your National Solar Tour” and the body with a list of sites, just like the left of the map.

        • Remove Attached File UI controls.

    • Button: Refine Search

      • Should show filter pop-up again with values selected.

    • The map will display markers of the items of the result.

    • The result list will show hosts with address information, and it’s tour group dates.

    • Tabbing on marker in the map will open popup info with name and location of the host/location.

Tour Registrants Page
  • HTML Page

  • Should only be seen by user logged in with organizer role.

  • Tour Guide column title should be changed to Tour Host

  • See Detail profile should pop up details on that user.  

  • Clicking on the image/name under Tour Guide/Host should pop up details on that host.

Tour Hosts List
  • HTML Page

  • Should only be seen by user logged in with organizer role.

  • This page should list Host/Locations attached to the logged in organizer.

  • Take out the image and add contact info in the center column (Phone Number & Email - clicking email should mailto:)

  • Add a details button to see more info about the person/house. It should open pop up with information.

  • Add Export Button to export list in Excel doc format.

Send Email Page
  • HTML Page

  • “To” field should be populated If user is logged in.

  • Subject should be pre-populated with “My National Solar Tour”

  • Body will be the textual representation of the list view of locations found on the results page.

  • Provide configuration documentation for how to configure the SMTP against Gmail and Amazon SES.

  • For users not logged in who use this form, we need to capture the email and persist it in a new table in database.

    • table name is “subscribers”

      • fields are : email, and origin.

      • origin field represents from where we collected this email. It should have two values “PromoPage” or “SendEmailPage”.

    • Add a page to admin pages to view these subscribers.

Promotional Page
  • HTML Page

  • Page title and body must be editable from backend.

  • Subscribe widget will be using the “subscribers” table to persist emails.

  • Sharing should be functional :

    • facebook

    • twitter

    • linked

    • digg

    • email (this should open the client email with link to the article)

  • The RSS link that render the RSS widget in the right column should should be configured in backend.

Model Definition and Admin web application update

  • All models were created in the admin web application challenge.

  • You can update existing models if needed.

  • Add new lookup tables to store the types and technologies being used in the UI prototype to filter sites.

  • Update the location/host model to have association with types and technologies lookup, also include all fields not current supported that are displayed/collected in “I want to help on tour” window modal.

  • Admin web application should be updated with the changes we do to the model definitions.

Documents

Provided in challenge forums:

  • UI Prototype

  • Existing Admin Yii Web Application

AWS Setup

Winner will be given an Ubuntu AWS instance to setup the application.



Final Submission Guidelines

Deliverables

  • All source code and script implemented the requirements.

  • Detailed deployment document that includes the following :

    • Setup prerequisites (what software needed to be installed .. etc)

    • Folder structure

    • Configuration

    • Steps to run the application

    • Verification steps

ELIGIBLE EVENTS:

2015 topcoder Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30049644