Code Monkey home page Code Monkey logo

jury's Introduction

Jury Banner

Jury

A project designed to create a new pairwise judging system using modern technologies, aimed at optimizing the user experience of judges, hackers, and organizers. See the inspiration for this project: Gavel by anishathalye. This project uses an individual ranking and rank aggregation system to automate the judging process and help organizers get more data from less judges to decide the winners of your hackathon.

To get started, check out the Jury documentation.

Contributing

Check out our contributing docs.

jury's People

Contributors

michaelzhao21 avatar geeth24 avatar abdullah50053 avatar nickburnett avatar janhellar avatar

Stargazers

james avatar Victoria Vynnychok avatar  avatar Naveen Iyer avatar Ryan Le avatar  avatar  avatar Kevin Ge avatar Amrit Rathie avatar

Watchers

 avatar

jury's Issues

Add Projects Page

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Page for adding projects. Should be within add-projects.tsx.

Additional context

image

Have Judging Login autofill based on URL

Is your feature request related to a problem? Please describe.

We are planning on sending out judging login codes using email. It would be a lot easier if judges could just click on a link and it auto log them in.

Describe the solution you'd like

The form field for judging should be filled in automatically if a querystring is present. This querystring will be code and should be 6 alphanumeric digits. It should be ignored if not. An example URL will be: https://jury.hackutd.co/judge/login?code=AX5B2Q.

Additional context

image

This should be filled in when the user loads the page.

Additional discussion point

Should we have it auto login (judge doesn't have to click the "login" button or should we just have it auto-fill and have judges click on the login button).

Add a checkbox to not send emails to newly created judges

Is your feature request related to a problem? Please describe.

Sometimes we don't want to send emails or can't when creating judges.

Describe the solution you'd like

Add a checkbox and perhaps a popup showing the judge code

Additional context

image

checkbox above "Add"

Add option to resolve flags

Is your feature request related to a problem? Please describe.

Flags should be hidden eventually as the new flags get buried.

Describe the solution you'd like

Add a "resolve flag" option for admins which hides it from the flags popup (also add a toggle in view flags that can show the resolved flags).

Additional context

No response

Pause Judging

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

There should be an option to pause judging. This should just be a button somewhere on the main admin page, which lets admins pause the judging. This would pause the timer that will be implemented by #8.

Pausing judging will also show a message to judges once they finish judging the current project, basically saying that judging is paused by an administrator or something.

Additional context

No response

[Bug] DRAG AND DROP NOT WORKING AFTER 3 ITEMS

Expected Behavior

Drag and drop should work normally on all devices

Current Behavior

However, judges are reporting that the drag and drop feature does not work for all except the first 3 items. The "dropzone" does work when dropping stuff to the below items, but for some reason you can't drag any of the items starting from the 4th item...

Describe the Bug

No response

Steps to Reproduce

  1. Judge more than 3 projects
  2. Try to drag and drop the 4th project

This issue is inconsistent across mobile devices (issue does not occur on PC)

What device are you seeing this issue on?

Android Mobile Device, iOS Mobile Device

What browser are you seeing this issue on?

Chromium Mobile, Safari Mobile

Possible Solutions

No response

Better generic popup component

Describe the feature you'd like

Generalize the popup.tsx component and use it for all the other custom popup components

Pre-existing Issue or Justification

The current popup.tsx component is BAD... well it's not that extensible and there's a lot of custom popups everywhere.

Additional context

No response

Make judging rating popup less ugly

Describe the feature you'd like

The sliders for judge to rate projects don't have any CSS, so they are quite ugly. This should be fixed to match the design style more. See below.

Honestly this entire popup just needs to be improved UI-wise.

Pre-existing Issue or Justification

image

Additional context

See the figma for an idea of how this should look TT

Show list of all projects

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Table view of projects; simply pull all projects from the database

Additional context

image

Make toggle switch attractive to look at

Is your feature request related to a problem? Please describe.

The toggle switch is ugly as hell (but it technically works ig)

image

Describe the solution you'd like

Match the figma design for the toggle switch. It should retain the same functionality; just look better. See the image below. Also add primaryLight to tailwind config as listed below if not already there. The ugly toggle switch was added in #11.

Additional context

image

Colors Used

  • Projects text - Light
  • Projects background - #CEEAF7 (should be Primary Light; need to add to tailwind config)
  • Judges text - White
  • Judges background - Primary

Title on View Project should link to Devpost

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

image

Clicking "StoryStocks" in this case should link to the devpost page of that project (it should be stored in the project.url field)

Additional context

No response

Send emails to judges when added to system

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Judges should be sent an email with their unique ID when they are added to the system. Ideally, we would have #10 done so we can just send a link to judges to click on. We would simply call an SMTP service to send emails. This would need to be added to the Dockerfile as env tokens.

Additional context

No response

Replace GSL

Is your feature request related to a problem? Please describe.

Currently, the GSL library requires us to use debian:bullseye-slim.

Describe the solution you'd like

However, we can use a much smaller base image if we get rid of the GSL library dependency. We are LITERALLY only using it for rgsl::psi::diagamma::psi.

Additional context

No response

[Bug] Average judge seen stat on admin panel is not updating

Expected Behavior

It should show the average number of times an active judge has seen a project

Current Behavior

It shows a big fat 0

Describe the Bug

No response

Steps to Reproduce

  1. Have judges see projects
  2. Go to admin panel
  3. Judge average seen is still 0 aaaaaaaaaaaaaa

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

I don't know if this is because of the aggregation or something in the frontend but it should be a relatively easy fix...

[Bug] When backend server doesn't connect, it shows unable to parse JSON error

Expected Behavior

It should just say "network connection issue" or smth of the sort.

Current Behavior

It shows:

image

Describe the Bug

No response

Steps to Reproduce

  1. Start the frontend without the backend
  2. Try to log in or make any API call

What device are you seeing this issue on?

Linux Computer

What browser are you seeing this issue on?

Firefox

Possible Solutions

No response

[Bug] Busy popup does not show correctly on mobile

Expected Behavior

It should be scaled correctly to account for the screen width

Current Behavior

image

Describe the Bug

No response

Steps to Reproduce

  1. Go to judge
  2. Start judging
  3. Click busy button

What device are you seeing this issue on?

Android Mobile Device, iOS Mobile Device

What browser are you seeing this issue on?

Firefox Mobile, Chromium Mobile, Safari Mobile

Possible Solutions

No response

Drag and drop should save on rearrange

Is your feature request related to a problem? Please describe.

Users don't know to press the save button:

image

Describe the solution you'd like

It should auto-save their rankings when they drag and drop items.

Additional context

No response

[Bug] Export CSVs no longer work

Expected Behavior

CSVs should export

Current Behavior

But there is a format error bc we changed the database so some properties just don't exist anymore.

Describe the Bug

No response

Steps to Reproduce

  1. Go to admin console
  2. Add a judge
  3. Go to settings
  4. Click export judges
  5. It should throw an error !!

What device are you seeing this issue on?

Linux Computer, Windows Computer

What browser are you seeing this issue on?

Firefox, Chromium (Chrome, Brave, Edge, Arc, Opera), Safari

Possible Solutions

Fix the export fields to match the correct fields

Hide judge should not set their last updated time

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

This is a one line change lol; but basically don't change the lastUpdated field when we hide judges/projects

Additional context

No response

Back button on admin "add" pages

Is your feature request related to a problem? Please describe.

You can't go back to the admin dashboard from the Add Judges or Add Projects page.

Describe the solution you'd like

A simple "back" text button at the top; see figma ss below

Additional context

image

[Bug] Get rid of button expansion

What Happened?

When buttons are hovered, they expand. This is a BAD design choice and should be removed. This is bad on desktop and invisible anyways on mobile.

Steps to Reproduce

  1. Go to home page
  2. Hover over buttons
  3. UGLY!!!

What device(s) are you seeing this issue on?

Linux Computer, Windows Computer, Mac Computer

What browser are you seeing this issue on?

Firefox Desktop, Chromium Desktop (Chrome, Brave, Edge, Arc, Opera), Safari Desktop

Possible Solutions

I believe we should replace this with an outline or change in background color.

Additional Info

image

[Bug] Judging can be started with no timer

Expected Behavior

Judging should continue with no time limit.

Current Behavior

The "Start Judging" button persists during judging

Describe the Bug

No response

Steps to Reproduce

  1. Set blank timer on Admin side
  2. Start judging
  3. Try clicking the "Start Judging" button

What device are you seeing this issue on?

Mac Computer

What browser are you seeing this issue on?

Chromium (Chrome, Brave, Edge, Arc, Opera)

Possible Solutions

No response

Add Judges Page

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Page for adding judges. Should be within add-judges.tsx.

Additional context

image

Custom Alerts

Describe the feature you'd like

I would like to have custom alert popups instead of using the browser's default alert() feature.

Pre-existing Issue or Justification

Whenever we have a backend call, we need to send an alert to the user when it succeeds. I would love if we could have a nice-looking alert box!

Additional context

I'm thinking this should be something that could be added to a page, with an alertOpen and alertText state variable.

<Alert text={alertText} open={alertOpen} setOpen={setAlertOpen} />

Another option for implementation is to have this as a global component and use the zustand store which can update a global state variable and show the alert. (lowkey like this one better but it is harder)

Allow unlimited time on judging

Is your feature request related to a problem? Please describe.

See #73 - If no timer is set, the "start judging" button still shows up.

Describe the solution you'd like

If there is no timer set, hide the whole timer component.

Additional context

No response

[Bug] Drag and Drop for unsorted projects unclear

Expected Behavior

image

Current Behavior

Unsorted projects not very clear (that drag and drop line is hard to see), so many judges are judge sorting them under the line.

image

Describe the Bug

No response

Steps to Reproduce

It's a UX issue because judges don't know to put it above that line.

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

This has many different possible solutions, please discuss below before implementing.

Use `rocket_db_pools`

Is your feature request related to a problem? Please describe.

Using a database behind State could bottleneck use.

Describe the solution you'd like

Instead, use the provided rocket_db_pools contrib library. It allows you guard requests with individual connections to the database rather than the connection pool. There is first class support for MongoDB.

Additional context

https://api.rocket.rs/v0.5-rc/rocket_db_pools/

Add option to use MongoDB Atlas

Is your feature request related to a problem? Please describe.

MongoDB local container setup is jank sooooooo its prob a better idea to use Atlas by default.

Describe the solution you'd like

Add a separate docker compose file for MongoDB Atlas and use it by default.

Additional context

No response

Split Judging Timer into its own component

Describe the feature you'd like

The judging timer has a LOT of messy code within the live.tsx file (/judge/live). It's making the component REALLY big, and I would like for it to be split into its own component file.

Pre-existing Issue or Justification

No response

Additional context

No response

[Bug] "Busy" flags should not show up in the flags popup

Expected Behavior

We should have it filtered out. Could also add a checkbox to enable them

Current Behavior

image

Describe the Bug

No response

Steps to Reproduce

  1. Flag some projects
  2. Open the flags menu on admin side

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

No response

Add [better] MongoDB setup info in README

Is your feature request related to a problem? Please describe.

There is no info about whitelisting IPs in the README. Add that.

Describe the solution you'd like

Add IP whitelist and a bit more detailed info in README about MongoDB setup.

Additional context

No response

[Bug] Admin clock just... does not work well at all

What Happened?

Oh boy. THIS CLOCK (see below) is the most janky thing I've ever implemented ๐Ÿ˜ญ It doesn't tick correctly, it does weird stuff on resetting, and the database/client side just aren't synced. FIND A BETTER WAY TO IMPLEMENT THIS!!!!!!!!!1

Steps to Reproduce

  1. Go to admin page
  2. Start the timer
  3. Then do stuff like stop the process, restart the clock, etc
  4. It'll act up eventually

What device(s) are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

No response

Additional Info

image

(also it happens on all devices lol)

[Bug] Skip does not work sometimes

Expected Behavior

Skipping a project should give you a completely different project.

Current Behavior

But for some people it doesn't work. A temp fix (that works for SOME people) is to click "I want to take a break" and hope it reassigns you a new project.

Describe the Bug

No response

Steps to Reproduce

This is inconsistent to reproduce, but you would need multiple judges to be active at the same time. Have judges skip projects and eventually one of them should be unable to skip a project.

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

Uhhhh idk exactly what the best option is but I have a few ideas:

  1. Keep track of what the judge has previously skipped and don't give them any from that list (but we would somehow have to remove items from that list eventually so they wouldn't run out of projects)
  2. Instead keep track of the LAST project the judge skipped to ensure they won't get that project (may run into problem of a loop between skipping project A and B)

Also check the algorithm to make sure it's properly assigning projects to judges.

Clean up golang dependencies

Describe the feature you'd like

See what golang dependencies we're not using and get rid of them.

Pre-existing Issue or Justification

I noticed that the docker build was downloading the following, which I don't think we use:

jury-dev-backend   | go: downloading golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8
jury-dev-backend   | go: downloading golang.org/x/sync v0.7.0

Additional context

No response

Add ability to edit projects

Is your feature request related to a problem? Please describe.

Right now it says this:
image

Describe the solution you'd like

It should bring up an edit menu similar to judges, which allows you to edit the properties of projects -- this should NOT allow you to edit the location as that is autogenerated.

See the edit judges menu below:

image

Additional context

No response

[Bug] MongoDB Replica Set initialization script fails due to slow laptop

Expected Behavior

The script should wait for the database to accept connections before exiting.

Current Behavior

Currently, the script is just closing after trying to connect after waiting for 10 seconds, which means the RS never gets initialized. Due to a certain person's slow computer, the MongoDB container takes more than 10 seconds to initialize and thus won't accept connections until afterwards.

Describe the Bug

Screenshot_2023-04-18_at_2 14 21_PM

Steps to Reproduce

  1. Get a slow computer
  2. Run the dev dockerfile on a clean repo

What device are you seeing this issue on?

Mac Computer

What browser are you seeing this issue on?

No response

Possible Solutions

It should loop in the bash script until the replica set initialization completes successfully

Audit Log

Is your feature request related to a problem? Please describe.

There's no good way to see what happened currently. Like when a judge votes for a project or when an admin changed.

Describe the solution you'd like

I want all that logged somewhere admins can see in a nice UI.

Additional context

No response

Abstract database name to env variable

Is your feature request related to a problem? Please describe.

The MongoDB database name will always be "jury". This means that you can only have 1 copy of the db per cluster.

Describe the solution you'd like

Create an environmental variable that the user can set for the database name. See the last line return client.Database("jury") in server/database/init.go.

Additional context

Note that the env variable needs to be added to the following locations:

  • .env.template
  • README.md
  • docker-compose.yml
  • Dockerfile
  • docker-compose.dev.yml
  • dev.Dockerfile
  • docker-compose-mongo.yml
  • docker-compose-mongo.dev.yml
  • .do/deploy.template.yaml

Also for reference, this is the "database" I am referring to in a MongoDB Atlas cluster:

image

[Bug] Start judging and settings button on admin are floating

Expected Behavior

It should be just stay at the top and not move when scrolled

Current Behavior

It's set to position: fixed and so it scrolls with the screen :(

Describe the Bug

image

Steps to Reproduce

  1. Go to admin page
  2. Scroll down

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

No response

Revert Change to Flag/Busy/Skip popups

Describe the feature you'd like

Grouping the absent flag with the other flags actually doesn't make sense. The "skip" with the 2 options of busy/absent made a lot more sense and should be reverted from what is currently shown to the previous 3 options on flag and 2 options on skip popups respectively.

Pre-existing Issue or Justification

No response

Additional context

See figma for reference:

image

Judging timer on Admin Page

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

The timer should be fully functional and synced between multiple clients. It should start when judging starts and pause whenever judging stops. Since pausing and unpausing hasn't been implemented yet, just have it run whenever the server starts.

Don't worry about the time overflowing either lmao; it won't ever go over 99 hours. The design should already be implemented in AdminStatsPanel.tsx. See the image below for how it looks.

Additional context

image

Add better error handling

Is your feature request related to a problem? Please describe.

        // Find next project
        let next = match pick_next_project(db, &judge).await {
            Ok(p) => p,
            Err(_) => return (Status::InternalServerError, None),
        };

Errors messages are just... discarded :/

Describe the solution you'd like

We should have some way for the end user to see error messages. This should also be logged in the server logs fs

Additional context

No response

Show list of all judges

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

Main table for judges

Additional context

image

[Bug] Sometimes email sending doesn't work :/

Expected Behavior

Emails should send normally through SMTP or the Sendgrid API.

Current Behavior

Sometimes it just... doesn't work ๐Ÿ˜ญ Idk what the root cause is but it's reported on multiple instances inconsistently.

Describe the Bug

No response

Steps to Reproduce

  1. Go to the add judges page
  2. Try to add a judge
  3. It may not send an email :(

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

No response

[Bug] Colors not working on skip/vote popups

What Happened?

https://tailwindcss.com/docs/content-configuration#dynamic-class-names

Because the popups use dynamic color class names, tailwind is not bundling the colors correctly!

Steps to Reproduce

  1. Open judging live page
  2. Click on Vote/Skip

What device(s) are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

Either:

  1. Include a hidden element with the colors I need
  2. Find a way to use the full color name in each component

I think the latter is probably better semantically but technically 1 works too -- depends on code complexity.

Additional Info

No response

Save judging time to database

Is your feature request related to a problem? Please describe.

Judging timer restarts on app restart

Describe the solution you'd like

Save the judging time to the DB so if the app crashes we can just restart it from the same time. Also, we can add a feature to manually edit the judging time so if something goes wrong we can put in a correct time.

Additional context

No response

Create MongoDB Indices

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

We should probably have indices for MongoDB queries. This would be for the judges/projects databases.

Additional context

See https://www.mongodb.com/docs/manual/indexes/

Also note that these will have to be added to init-mongo.js for the local mongodb instance!

[Bug] "Busy" button should not be disabled before timer starts

Expected Behavior

The "Busy" button should be clickable (see below)

Current Behavior

image

Judges are confused bc how do you start judging if a project is busy??

Describe the Bug

No response

Steps to Reproduce

  1. Just see SS above

What device are you seeing this issue on?

No response

What browser are you seeing this issue on?

No response

Possible Solutions

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.