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.
- A set of REST-based services to support data access and updates for the mobile applications.
Competition Task Overview
The purpose of this challenge is to follow the provided architecture and implement the 1st set of backend services, which should include MenteeMentor Programs, MenteeMentorGoals, MenteeMentorTasks, Role and Responsibilities, Documents.
Detailed Requirements:
1. Everything from “Entities Class Diagram“ required to implement the services outlined below are in scope.
2. The following from the “Services Class Diagram” are in scope (both interfaces and implementations):
2.1. MenteeMentorProgramService
2.2. MenteeMentorGoalService
2.3. MenteeTaskService
2.4. The corresponding specification classes
3. The corresponding controllers for each service above from the “REST API Class Diagram” are in scope.
4. Here is the list of endpoints corresponding to the Services defined above: https://docs.google.com/spreadsheets/d/15kThTkOwmXZn3uhmKM3Gb_uPi_KgQdUpXRoP-uEfzJI/edit?usp=sharing
5. There is one additional entity that we needs to include in the data model: a MenteeMentorResponsibility. The table should be called “mentee_mentor_responsibility” to be consistent with current naming convention in the data model. A collection of responsibilities are associated to each MenteeMentorProgram (just like MenteeMentorGoals and MenteeMentorTasks). We need to designate a “description” of the responsibility (VARCHAR(256) and whether the responsibility is assigned to the Mentor or Mentee (assignment - VARCHAR(10)).
General Notes:
1. Please follow the provided architecture to implement the services, make sure you go through all documents included in the architecture including the ERD and Application Design Specification.
2. Please properly document all code.
3. Please provide sql script to create database, create tables, drop tables, etc… In addition, you need to provide a separate sql script to populate test data into the database so we can test the api with meaningful data.
4. Please provide ORM mapping file(s) (not needed if you are using annotations)
5. Please provide a new Swagger doc that covers the implemented API, you can use the existing swagger as reference. You’ll need to provide greater detail in the Swagger doc (e.g. what search parameters are being supported).
6. Please provide Unit Tests for your code.
7. You need to adhere to 12-Factor Principles (https://12factor.net/), specifically environment-specific information / configuration parameters should be provided to the application as system variables.
Technology Overview
Java 8
Jetty (we’re going to use an embedded server rather than an Application Container described in the architecture docs)
JPA
MySQL
Spring Boot
Swagger
RESTFinal Submission Guidelines
Submission Deliverables
1. Code that covers all requirements listed above.
2. Detailed guide explaining how to configure, deploy and test the code. You must provide details on how to verify the REST API.
3. Other supporting files like sql script, swagger doc, etc.
Submission Guidelines
- For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.- You should use the code in the following GitHub repository as a starting point for your submission: https://github.com/topcoderinc/HPE-LP-MentorMe-Services. You should fork this repository. Winning submissions will be asked to submit a pull request to the repository.
- Please use the existing build scripts to build and deploy your solutions. You, of course, may make modifications to them as required.