Challenge Overview

Project Overview

Mentor ME is a responsive mobile app with the objective at assisting underachieving high school students – particularly those at risk of becoming school dropouts. Mentor ME enables, empowers and inspires new talent by building networking relationships from a list of mentors that assist you sharing ideas, guidance, learning and connecting with other leaders.

The propose of Mentor ME is be more effective, efficiency at mentorship programs and to increase the coverage of current programs where younger adults can have access to volunteer mentors to get guidance and motivation to graduate. The core of Mentor ME is the match between the Mentee interests and opportunities to Mentor Skill.

The whole project consists of two parts:
The mentor and mentee Android application.
- The administrative web application for the Mentor ME App which allows Mentor ME staff to monitor.

This challenge is part of the Living Progress Build Challenge Blitz program.

Competition Task Overview

The purpose of this challenge is to come up with an architecture that covers that database design and services design for the whole project. More specifically:

1. Design the database schema to support the whole application, as part of the deliverable you are expected to provide the ERD and DDL for the database design.

2. Design the REST web services to support both the Android user app and the Web admin app. These two will share quite a few common services so you need to make sure the web services are optimized and have no duplication.

3. Proper authentication and authorization mechanism should be employed so that a certain role can only call the services the role has access to.

4. The web services must be implemented using Java 8, you should use either Dropwizard or Spring Boot to build the services.

5. Please analyze both the Android app prototype and the Web app wireframes to make sure the web services cover all the functionalities. We tried to analyze the functions as well and provided a list below, but you must double check and make sure your design covers all functions instead of just sticking to the list below.

Android App Functions

Please note if any of the following is not consistent with the prototype, please follow the prototype instead. If you are not sure about something, ask early in the forum.

Mentor:

- Login

- Social Login (LinkedIn)

- Copy Job Experience from LinkedIn

- Logout

- Forgot Password

- Register  - Mentors can be paired with Mentees or can be Professional Consultant Mentors who register for their expertise in certain area -- e.g. Legal Advice or Counseling Services.  Mentors can either register as part of a program associated to an Institution or may be unaffiliated to an institution.  Mentors will be provided with an institution code to create the affiliation to an institution.

- View / Create / Edit Profile

- Get Current Programs

- List Programs

- Invite professionals to programs

- Get Activities

- Get / Approve / Reject Mentee Requests

- Find Match Mentees Remote - a matching process that uses the Haven OnDemand (https://dev.havenondemand.com/apis/predict#overview) Predict API to find matching Mentees

- Find Matching Mentees Local - a simplified matching algorithm that returns a set of mentees if the remote service is unavailable.

- Get / Add / Update / Delete Goals

- Get / Add / Update / Delete Tasks

- Get / Add / Update / Delete Meetings

- Add professional consultants to programs

- View my own programs

- Manage goals / tasks in program

Note the get / view services will need to support filtering, paging, sorting, etc...

Mentee:

- Login

- Social Login (Facebook)

- Logout

- Forgot Password

- Register - Mentees may be affiliated with an institution or may register independently.  Mentees affiliated with an institution will be provided with an Institution Code.  Mentees that are under 18 years of age will require parental consent to register.   We’re going to send an email to

- Send Parental Consent Email

- View / Create / Edit Profile

- Get Current Programs

- List Programs

- Invite professionals to programs

- Get Activities

- Get / Approve / Reject Mentor Requests

- Find Match Mentors Remote - a matching process that uses the Haven OnDemand (https://dev.havenondemand.com/apis/predict#overview) Predict API to find matching Mentors

- Find Matching Mentors Local - a simplified matching algorithm that returns a set of mentees if the remote service is unavailable.

- Get / Add / Update / Delete Goals

- Get / Add / Update / Delete Tasks

- Get / Add / Update / Delete Meetings

Note the get / view services will need to support filtering, paging, sorting, etc...

Web App Functions

Please note if any of the following is not consistent with the wireframes, please follow the wireframes instead. If you are not sure about something, ask early in the forum.

Here are the basic use cases that we need to handle for System Admin flow:

- Login Functionality

- List Institutions

- Add Institution

- Update Institution (include Activate and Inactivate Institution)

- List Programs

- Add Program

- Update Program

- View Institution Program Detail

- View All Programs By Institution

- View All Mentors

- View All Mentees

- View User

- Deactivate User

- Reassign Mentees

- Approve/Activate Mentors

- View Calendar By Institution  - Each institution will have a calendar viewable by the Mentors and Mentees associated with the institution.  Institution admin will maintain this calendar.

- Add Event To Institution Calendar

- Delete Event from Institution Calendar

- Add Institutional Admin User

- Edit Institutional Admin User

- Delete Institutional Admin User

Here are the basic use cases that we need to handle for Institutional Admin flow.  Each Institution Admin will handle one institution account.  Each institution manages a series of programs.  Each institution will have a calendar that they manage for global events (e.g. Training Day for Mentors).

- Login Functionality

- List Programs for Institution

- Add Program

- Update Program

- View Institution Program Detail

- View All Mentors For Institution

- View All Mentees For Institution

- View User

- Edit User (Institution Admins may need to update user details and change parental consent flags based on provided documentation)

- Deactivate User

- Reassign Mentees

- Approve/Activate Mentors

- View Institution Calendar

- Add Event To Institution Calendar

- Delete Event from Institution Calendar

Please also check this challenge page to see more details about data model, again this is for reference only.

Technology Overview

Java 8

MySQL

Dropwizard / Spring Boot

Swagger

REST

Final Submission Guidelines

Submission Deliverables

1. TCUML containing all necessary diagrams

2. ERD / DDL

3. Application Design Specification

4. Web service documentation using Swagger

5. Web service to function / screen mapping

6. Assembly Specs are not required

Submission Guidelines

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30055282