---
# System prepended metadata

title: Rank-a-thon

---

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