Challenge Overview
This challenge is the second in a series of challenges for the mood-ring project. Mood-ring will be a mobile app that allows users to provide 360 feed back with other members of their project team as well as provide their 'Fun Factor" score for a given day. The first challenge involved building a native Swift implementation for the HTML protoype that is hosted here - https://appirio-mood-ring.herokuapp.com/
The app has 2 roles
- Users
- Managers
The following are the use cases for both these roles. In this challenge, we would like to build the data model for mood-ring in Force.com so the Swift app can then perform CRUD operations as per the various screens.
Proposed model
Project
- id: the id
- title: the title
- rating: current project's rating
- avgRating: the avarage rating of all user's in the project
- iconURL: the project icon URL
- tintColor: the tint color of the project's icon
- funFactor: the project's fun factor
User
- id: the id
- fullName: the full name
- rating: The current rating. Used in UI to show on different screens.
- funFactor: the current fun factor of the user
- iconUrl: the URL of user's image
Rating History
- id
- rating
- ratedBy
- User
- Project
Fun Factor
- funFactor: the fun factor index
- comment: the comment
- date: the date of the fun factor change
Please link the above objects (junction/ master detail/ lookup) based on your discretion and ensure that you justify the decision in your documentation. Also, the above is a rough desription of schema. If you have suggestions on how it should be improved, please post in the forums.
Some key considerations
- The fun factor is attached to the individual not the project. He/She maybe be: happy that all the projects are going well or be sad that his/hers dog died. The only relationship to the fun factor is what is supplied in the comments.
- The fun factor roles up to the "manager_satisfaction" page.
Satisfaction = fun factor
manager_dashboard screen
- "proj rating" is an average of ratings of persons on the current day
- "avg rating" is an average of ratings of persons for all days rated
- the line chart is the avg proj rating over time
member_details screen
- the line chart represents the average of all projects so a given day equal one point on the line chart. For each point on the line chart the there should be one bar for each of the projects that Jackblack Longnam is on
Manager - is a silent observer. He is interested in what team members are saying but does not provide any feedback at this time. Idea is that it gives him a quick glance at how projects are doing and if there is anyone he /she needs to reach out to.
We strongly encourage you to ask questions early in the forums if you need any clarifications.
Final Submission Guidelines
Submit the following
- Unmanaged package
- Deployment Guide which explains how your data model caters to the various use cases mentioned in the requirements