Challenge Overview
Project Overview
Our client want to use Amazon mturk to invite game players to play set of games. Each Human Intelligence Task (HIT) will be for completing a "task" (analogous to a subset of levels in the game versions) in exchange for payment.
Challenge Overview
In this challenge we are making several changes and updates to the mturk web dashboard to allow managing domains and users. In addition, we are adding some pages to frontend to allow requesting access and resetting user password.
The application consists of two parts :
-
csfv_mturk_api : this is a Node.JS REST API that handle all the backend logic and data manipulation.
-
csfv_mturk_dashboard : this is an angularjs application that handles the frontend pages navigation, rendering and data binding, and also communicates with csfv_mturk_api.
Challenge Requirements
You will address the following in this challenge :
Reset Password
We need to help users to reset their passwords, so you need to make following changes to the web dashboard frontend :
-
Forgot password link in Login page.
-
Add Forgot password page :
-
It should have email field.
-
Add validation to the field.
-
-
A link to login page.
-
The backend will lookup the email and send reset password link to user
-
The reset password should have configurable expiration date.
-
The Forgot password email template should be simple.
-
The link will redirect user to ‘reset password’ page.
-
The email template should be configurable.
-
-
-
Add Reset password page :
-
It will have two fields to set new password and confirm new password
-
On successful reset it will redirect user to logged in dashboard page.
-
Add validation to the page.
-
For backend changes :
-
Add the logic to Login.js controller.
Request Access
We need to direct users to get access to the web dashboard, so you need to make following changes to frontend module :
-
Add link to login page to allow guests to request access to dashboard.
-
When user clicks on the link it should open up a popup with statement “Please send email to mailto:support@verigames.com to request access to the dashboard”.
-
The mailto: option should include title “Request access to mturk web dashboard’.
For backend api changes :
-
The email, message, and title should be configurable.
Navigation Header
We need to add a navigation header with three items :
-
Tasks
-
Takes user to current dashboard page.
-
-
Domains
-
Takes user to Domains listing page.
-
-
Users
-
Takes user to Users listing page.
-
Domains listing page
We are adding a page to the web dashboard to manage domains, make the following changes to the web dashboard :
-
Accessed from “Domains” navigation item in header.
-
A text field with “add” button div will be available in top of the table to allow user to add new domain.
-
This page will display table of domains.
-
Each row in table will have following options.
-
Edit will open up a popup to edit domain name.
-
Delete option should show confirmation popup before processing the request.
-
-
-
Users with global_admin role will have access to all domains, and can add/edit/delete domain.
-
Users with admin role will have edit access to domains associated with her account. Admin can only edit, or delete these domains.
-
If user is has ‘user’ role then the user can view list of domains associated with her account, user cannot edit/delete these domains.
-
Any user (admin or user role) can add a domain, the user will have 'admin' access to that domain.
For backend api changes :
-
All logic should be added in new controller : Domain.js
Users listing page
We are adding a page to the web dashboard to manage users, make the following changes to the web dashboard :
-
Accessed from “Users” navigation item in header
-
This page will display table of users.
-
Add new user button will be available in top right corner above the table.
-
Clicking add will open up a popup with following fields :
-
User pick list with autocomplete functionality listing all existing users. This pick list will list all users in the system.
-
There will be ‘add new’ button next to ‘User’ pick list to add a new email address for a new user.
-
-
Role pick list.
-
Domain pick list.
-
-
The backend logic :
-
It will add new user to database.
-
A notification email to user will be sent to inform the user that she has been added to the dashboard. It should include a link to the dashboard and a link to reset password.
-
The email template should be configurable.
-
-
-
-
Each row in table will have following options.
-
Edit will open up same Add new user popup.
-
Delete option should show confirmation.
-
The logic should remove the user from the domain. Do not delete the user record.
-
It’s ok if user will end up with no domain being associated to her.
-
-
Reset password
-
This option should display confirmation popup.
-
A reset password email should be sent to the user.
-
-
-
-
Same as in current dashboard, the table will have a domain pick list to select domain, the table will display users associated with the selected domain.
-
Domain pick list should list domain names instead of IDs.
-
Filtering will be done in server side.
-
-
Users with global_admin role will have access to all users from all domains.
-
Users with admin role will have add/edit/delete access to users in the domains they have the ‘admin’ role in it.
-
If user is has ‘user’ role then the user can view list of users from domains associated with that user, user cannot add/delete/edit a user.
For backend api changes :
-
All logic should be placed in User.js controller
General Notes
-
Pages layout must follow existing pages look and feel.
-
All frontend pages/code will be part of csfv_mturk_dashboard.
-
All backend code will be implemented as API endpoints in csfv_mturk_api.
-
All variables that depends on the environment, and sensitive information should be configurable.
-
All tables should support pagination.
-
All code must be documented following current documentation.
-
All code must be validated.
-
Error handling should be implemented.
Postman
Update postman.json file to include the new endpoints added to the API.
Github Repo
Source code are hosted in private Github respositories. You need to request access in challenge forums if you don't have it already.
https://github.com/topcoderinc/csfv_mturk_api
https://github.com/topcoderinc/csfv_mturk_dashboard
Both modules contains a detailed readme file that explain how to setup and deploy.
Deliverable
-
Git patch file of the changes of both modules.
-
Readme file to reviewers.
Final Submission Guidelines
.