Rank-a-thon === ![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg) ![build](https://img.shields.io/appveyor/ci/:user/:repo.svg) ![chat](https://img.shields.io/discord/:serverId.svg) ## Table of Contents [TOC] ## Motivation In large-scale hackathons such as Hack&Roll (a hackathon organised by NUS Hackers which has over 500 participants), it is always a challenge to ensure a fair and transparent judging process within time constraints due to the sheer number of judges and participants involved. Rank-a-thon is a web application that facilitates large scale judging by providing judges with a platform to rank their assigned submissions using smart and efficient pairwise comparison algorithms. ## Prototype Click [here](https://www.figma.com/file/9iEO7VrMaJvtcWYQ82XQCp/Prototype?node-id=27%3A406) to view the prototype. User Stories --- ### Hackathon Participants ```gherkin= Feature: Making hackathon submission Scenario: Participant wants to make a hackathon submission Given Submission details have been filled (Team name, GitHub link, project description etc) When I click on submit Then My submission should be recorded Feature: Explore (and vote for) other projects Scenario: Participant wants to check out other projects in the hackathon When I click on explore tab Then I should be able to view other hackathon projects (and vote for them) Feature: Be informed of announcements Scenario: Participant wants to be informed of hackathon announcements When I click on "View Announcements" Then I should be able to view important announcements Feature: View amenities near me and event schedule Scenario: Participant wants to know where amenities are and view event schedule When I click on "Map" / "Schedule" Then I should be able to view the event map / the event schedule accordingly ``` ### Hackathon Judges ```gherkin= Feature: View assigned teams for judging Scenario: Hackathon judge wants to view his/her assigned teams Given I'm a logged-in User When I go to the "View assigned Teams" page Then I should be able to see the teams assigned to me to judge Feature: Assign scores to a team Scenario: Judge visits an assigned team's booth to check out their project Given I have checked out the assigned team's booth When I rate the submission on different criteria Then The application will record my scores Feature: Easily ask judging related questions Scenario: Judge has questions about judging / cannot find team Given Certain queries / problem faced with the event When I click on the "Get Help" button Then I should expect to be contacted by an organiser soon Feature: Browse other projects Scenario: Judge has finished judging his assigned teams and wants to browse other teams Given Completion of judging When I click on the "Explore" tab Then I should expect to easily browse and locate other projects Feature: View amenities near me and event schedule Scenario: Judge wants to know where amenities are and view event schedule When I click on "Map" / "Schedule" Then I should be able to view the event map / the event schedule accordingly ``` ### Hackathon Organisers ```gherkin= Feature: Generate list of winning teams Scenario: Judges finished judging and time for prize presentation Given all the judges have finished judging When I click on "Generate winners" Then I should be able to get a list of the winning projects for each category ``` Project Timeline --- ```mermaid gantt title Timeline section Milestones MVP :a1, 2020-06-01, 30d Additional features :after a1 , 30d section Features Site skeleton :2020-06-01 , 12d Core features : 18d Venue Map and booth location: 10d Event schedule page: 5d Participants voting: 10d ``` Tech Stack --- 1. React frontend 1. Golang backend 1. Ant design system 1. PostgreSQL database 1. Jest testing 1. GraphQL for queries ## Appendix and FAQ :::info **Find this document incomplete?** Leave a comment! :::