CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System
Team Contact
- MEMBERS
- Priyanka Jain: pjain15@ncsu.edu
- Pushpendra Patel: ppatel16@ncsu.edu
- Tanay Kothari: tkothar@ncsu.edu
- Timothy Dement: tmdement@ncsu.edu
- MENTOR
- Zhewei Hu: zhu6@ncsu.edu
Project Description
The goal of this project is to create a simple badging system for Expertiza, allowing students to earn badges when they meet certain predefined criteria while using the platform. The full E17A2 project topic description can be found here
Per the full project topic description, the badges will be designed using Credly. Previous work on this project topic revealed that any text included on the badges is too small to read, so all text should be removed from the badges and instead appear when the badges are hovered over.
This project is concerned with two preliminary badges — "Good Reviewer" and "Good Teammate" — but the design will be such that the badging system can be easily extended to include more badges in the future. The "Good Reviewer" badge will be awarded to students who receive very high review grades. The "Good Teammate" badge will be awarded to team members who receive very high teammate review scores. By default, the "threshold" for earning these badges will be set to a score of 95, but this value will be configurable on a per-assignment basis by the instructor.
A new "Badges" tab will be added for instructors on the "Edit Assignment" page where instructors can add badges and configure the badge criteria for a given assignment. Badges a student has earned can be seen when they view their "Task List" page, and an instructor will be able to view all badges earned by students when they view the "Participants List" page.
Please refer to the sections below for further detail.
Project Requirements
1. Create badges using Credly (do not include text)
1.1. Create the "Good Reviewer" Badge
1.2. Create the "Good Teammate" Badge
1.3. Store these badge images in the app/assets/images/badges directory
2. Create tables for the badging system
2.1. Create a table named badges with the following attributes
2.1.1. id — primary key
2.1.2. name — varchar
2.1.3. description — varchar
2.2. Create a mapping table named assignment_badges with the following attributes
2.2.1 id — primary key
2.2.2 badge_id — foreign key
2.2.3 assignment_id — foreign key
2.2.4 threshold — int
2.3. Create a mapping table named awarded_badges with the following attributes
2.3.1. id — primary key
2.3.2. badge_id — foreign key
2.3.3. participant_id — foreign key
3. Change the UI so that instructors can add, configure, and view badges, and so that students can view their badges
3.1. Add a new "Badges" tab to the assignments/edit page for instructors to add and configure badges
3.2. Add badge icons to the participants/list page for instructors to view badges
3.3. Add badge icons to the student_task/list page for students to view badges
4. Write feature tests to verify the modifications
4.1. Include tests in the a new badge_system_spec.rb file in the spec/features directory
Preliminary Mocks
Badges
The following Credly badge will be awarded to students who meet the "Good Reviewer" criterion for a given assignment:
The following Credly badge will be awarded to team members who meet the "Good Teammate" criterion for a given assignment:
Tables
The following is an example of mock data in the badges table:
id (primary key) | name (varchar) | description (varchar) |
---|---|---|
1 | Good Reviewer | This badge is awarded to students who receive very high review grades. |
2 | Good Teammate | This badge is awarded to team members who receive very high teammate review scores. |
The following is an example of mock data in the assignment_badges mapping table:
id (primary key) | badge_id (foreign key) | assignment_id (foreign key) | threshold (int) |
---|---|---|---|
1 | 1 | 1 | 95 |
2 | 2 | 1 | 95 |
3 | 1 | 2 | 90 |
4 | 2 | 2 | 85 |
5 | 1 | 3 | 80 |
The first row represents that the badge with badge_id 1 ("Good Reviewer") has been activated for assignment with assignment_id 1 with the default threshold of 95.
The second row represents that the badge with badge_id 2 ("Good Teammate") has been activated for assignment with assignment_id 1 with the default threshold of 95.
The third row represents that the badge with badge_id 1 ("Good Reviewer") has been activated for assignment with assignment_id 2 with a customized threshold of 90.
The fourth row represents that the badge with badge_id 2 ("Good Teammate") has been activated for assignment with assignment_id 2 with a customized threshold of 85.
The fifth row represents that the badge with badge_id 1 ("Good Reviewer") has been activated for assignment with assignment_id 3 with a customized threshold of 80.
The following is an example of mock data in the awarded_badges mapping table:
id (primary key) | badge_id (foreign key) | participant_id (foreign key) |
---|---|---|
1 | 1 | 1 |
2 | 2 | 1 |
3 | 1 | 2 |
4 | 2 | 3 |
The first row represents that the assignment participant with participant_id 1 has earned the badge with badge_id 1 ("Good Reviewer") for the given assignment.
The second row represents that the assignment participant with participant_id 1 has earned the badge with badge_id 2 ("Good Teammate") for the given assignment.
The third row represents that the assignment participant with participant_id 2 has earned the badge with badge_id 1 ("Good Reviewer") for the given assignment.
The fourth row represents that the assignment participant with participant_id 3 has earned the badge with badge_id 2 ("Good Teammate") for the given assignment.
Views
The following screenshots show a comparison of the existing "Assignments Edit" page, alongside a mockup incorporating the new badging system where instructors can add and configure badges for a given assignment.
The following screenshots show a comparison of the existing "Participants List" page, alongside a mockup incorporating the new badging system where instructors can view all awarded badges for a given assignment.
The following screenshots show a comparison of the existing "Student Task List" page, alongside a mockup incorporating the new badging system where students can view all of the badges they have earned.
Overview of Work Completed
NOTE: More information will be included in this section as the project progresses.
Testing
A new badge_system_spec.rb file will be created in the spec/features folder, and will include feature tests that verify the modifications made for the project.
NOTE: More information will be included in this section as the project progresses and the tests are written.
Video Demonstrations
NOTE: More information will be included in this section as the project progresses.
Files Modified
New Files
• app/assets/images/badges
A new directory created to house the new badge image files.
• app/assets/images/badges/Badge-Good-Reviewer.png
The image used for the new "Good Reviewer" badge.
• app/assets/images/badges/Badge-Good-Teammate.png
The image used for the new "Good Teammate" badge.
• spec/features/badge_system_spec.rb
The file holding the new tests written for the badging system.
• db/migrate/20171115222415_create_badges.rb
TBD: The migration for the new badges table.
• db/migrate/20171115224048_create_assignment_badges.rb
TBD: The migration for the new assignment_badges table.
• db/migrate/20171115230007_create_awarded_badges.rb
TBD: The migration for the new awarded_badges table.
Edited Files
• app/models/review_response_map.rb
The file in which the code for the "Good Reviewer" badge will be inserted.
NOTE: More detail will be provided as the project progresses.
• app/models/teammate_review_response_map.rb
The file in which the code for the "Good Teammate" badge will be inserted.
NOTE: More detail will be provided as the project progresses.
• app/views/assignments/edit.html.erb
The UI changes allowing instructors to add and calibrate badges for a given assignment.
• app/views/participants/list.html.erb
The UI changes allowing instructors to view badges for the participants of a given assignment.
• app/views/student_task/list.html.erb
The UI changes allowing students to view their badges for all of their assignments.
• db/schema.rb
Incorporating schema changes for the three new badges, assignment_badges, and awarded_badges tables.
References
Videos summarizing the previous team's work on this project topic can be found here.