Rank-a-thon
===



## 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!
:::