Challenge Overview

Challenge Objectives
  • Create the listed database entities required for the project
  • Unit Testing the entities using CRUD operations 
  • Test Data generation

Project Background
In the first phase of the project we covered the mobile app design. This phase will develop the Android and iOS apps based on the  design. Also the functionality required for the backend of the mobile app will be covered in this project except the user authentication and intranet stories. The authentication will involve SSO and intranet stories will be provided by client's sharepoint APIs. The main features that will be covered in this app are as follows.
  • Events
  • Surveys
  • Rewards
  • Intranet Stories

Technology Stack
  • Java 8
  • Spring
  • JPA
  • Postgres SQL
  • Tomcat 8.5
Individual Requirements

Database Entities
Create the the listed database entities without missing any attributes needed for the mobile app by referring the screens provided in the forum. You should cover all mappings and associations required using proper JPA annotations. This challenge need to cover *only* the entities for the following features. Please use UUID whereever there is a transactional table being built.
  • Profile
    • Please use email as primary ID, rest everything will be provided by SAML. No need to store the rest of the data.
    • Things to be built -
      • Save preferences
      • History of events registered
      • History of points earned - Only history is needed. Points will come from a separate system.
      • Badges earned - Badges will come from Admin system. Here we just save the badges earned from events. Each event will have one or more badge
  • Events - Event is characterised by UUIDs. The UUID for each event will be provided by the Admin system (not in scope).
    • Required
      • Only Transactional tables/code needs to be built. 
      • Event registration  - Events will be created in another system(Admin system). As part of this, we save only event registration information of attendees
      • Session - Each event will have multiple serssions, we need to store attendees information for each session. 
      • Comments - Comments will be associated with event. Need 1 level nesting of comments (see UI).
      • QR Code - QR code will be generated for each event attendee. Make sure we have tables/code to accomodate that.
      • Points - Need a way to save points for each user. Points are earned on participation of each event. (Points will be provided by Admin system. We just save them for each activity)
    • NOT Needed
      • NO Admin part needs to be built.

Unit Testing
Provide junit tests performing CRUD operations on the entities created.

Test Data Generation
Dummy data generation script is also required as part of this challenge which can be useful for the upcoming challenges.
You need to make sure that all tables are covered in your data generation script.
Not a lot of dummy data needs to be cretaed. A few rows(like 5-6) for each table should be enough.

Deployment guide and Validation Document

Make sure to require two separate documents for validation.

A README.md that covers:
  • Deployment - that covers how to build and test your submission.
  • Configuration - make sure to document the configuration that are used by the submission.
  • Dependency installation -  should clearly describe the step-by-step guide for installing dependencies and should be up to date.
A Validation.md that covers:

Validation of each requirement can be mentioned in this document which will be easier for reviewers to map the requirements with your submission.

Final Submission Guidelines

  • Submit the java project source code.
  • Submit all the SQL scripts.
  • Make sure to document the class and methods of the source files following the best practices

ELIGIBLE EVENTS:

Topcoder Open 2019

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30071187