Register
Submit a solution
The challenge is finished.

Challenge Overview

INTRODUCTION
This is the next in a series of challenges to build a website used to display mortgage interest rates for customers in a very simple way.  We've completed the design and prototyping stages and are moving on to development of supporting web services.

REQUIREMENTS
For this challenge you'll be creating web services to support CRUD functions.  Your backend should be written for Node with MySQL for data storage.  Reference the completed designs and clickable prototype for data fields, navigation, etc. when developing your services.

Global
-- Include paging where appropriate in all endpoints
-- Endpoints marked with a * below are protected should require authentication
    -- Two user roles - loan officer and admin
-- Configurations options such as database connection, email server, etc. should all be configurable for different deployment environments

User Endpoints
-- Account registration - email/password or Facebook
    -- New accounts must be flagged for approval by an admin
    -- Reference mi_03_1_Login_Register for related fields
-- * Profile setup/update - personal info, contact info, photo, licensed states, etc.
    -- Reference mi_03_2_Register_Profile, mi_03_3_Register_States, mi_03_4_Register_Photo for related fields
-- Profile retrieval - contact info, licensed states, etc.
    -- All profiles should be accessible publicly for contact info display
    -- Reference mi_01_8_Details for public display example
    -- Reference mi_05_2_Admin_Approval for admin display example
-- Contact loan officer
    -- Send an email to address associated with profile
    -- Reference mi_01_8_Details for related fields
-- User login - email/hashed password
-- User logout - destroy session
-- Forgot password - reset and email the user

Rates Endpoints
-- Search rates - public facing for finding available rates
    -- Main search by user entered zip code or state
        -- Zip codes need to be mapped to corresponding state
        -- State names and abbreviations need to be recognizable
    -- Filtering with location, mortgage product, purchase or refinance options
    -- Reference mi_01_3_New_location, mi_01_4_Product_Select, mi_01_5_Loan_Purchas_Options, mi_01_6_Loan_Refinance_Options for filtering options
    -- Reference mi_01_1_Home, mi_01_2_1_Rates_20_items, mi_01_2_2_Rates_10_items for user search and paging
-- * Edit rates - loan officers update their available rates on an ongoing basis
    -- Reference mi_04_2_Edit_Rates, mi_04_3_Updated_Dashboard for related fields

Admin Endpoints
-- * Approve/reject new accounts - all new accounts must be approved
    -- Accounts should be searchable by all fields (company, email, phone)
    -- Reference mi_05_1_Admin for functionality
-- * Get existing accounts - all accounts should be visible to an admin
    -- Accounts should be searchable by all fields (company, email, phone)
    -- Reference mi_05_3_Existing_Accounts for functionality

Miscellaneous
-- Contact us
    -- Accepts name, phone, email - emails data to an internal address
        -- Recipient address should be configurable
    -- Reference mi_02_About for fields/functionality

Please feel free to add other endpoints as you feel are appropriate.  The list above is guidance for the functionality required to interact with the UI.



Final Submission Guidelines

-- Swagger descriptor for all endpoints
-- Postman collection of requests for testing all endpoints
-- Database dump of any necessary static data
-- Guide describing how to deploy/run/test your submission
-- Source project and supporting files
-- Video overview of your submission

 

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

Challenge links

ID: 30058888