Giter VIP home page Giter VIP logo

mentorq's Introduction

MentorQ Frontend

A real-time ticket queue system aimed at connecting hackers and mentors! Inspired by HackMIT's Help-Q and built with React.

Getting Started

First, install your dependencies from npm.

npm install

Next, run your React server.

npm start

Setting up frontend-core for development

  1. Go to node_modules/@hackru/frontend-core/dist/index.js
  2. Comment out the line const BASE = process.env.REACT_APP_MODE && process.env.REACT_APP_MODE === "development" ? defaults.rest.dev : defaults.rest.prod;
  3. Replace with: const BASE = defaults.rest.dev;
  4. npm start

mentorq's People

Contributors

anarav avatar ashrit-yarava avatar dependabot[bot] avatar ericxuan02 avatar joncanales avatar kayla-kam avatar kironb avatar lucentfong avatar mjrb avatar olagun avatar srnazng avatar tang-michael avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mentorq's Issues

Ticket Filter

Add ability for people to filter tickets that they see

Admin should be able to filter what tickets they see (open, claimed, closed, canceled)
Mentors should also be able to filter tickets they see (open, claimed, tickets they claimed (?))

In addition, the ticket queue should be automatically sorted such that the most recent tickets are on top, older tickets on bottom. For users, their closed tickets should be shifted to the bottom. For Mentors, their Claimed tickets should be on top.

How you filter is up to you. Maybe have a bunch of checkboxes for each type of status and show those that are checked off?

Sound Notification

  • Notification button (for ex: bell icon) on menu to allow sound notifications to be enabled/disabled
  • Component to allow for sound alerts
  • If sound alert is enabled, play notification when: 1) Mentor: New ticket is added to ticket queue 2) User: Ticket has been claimed

Admin Page

Create an admin page for Director users that will allow them to

  • View list of mentors with average rating [MENTORS]
  • View all closed tickets and associated rating/feedback [TICKETS]
  • Stats -> number of mentors, number of unique users for MentorQ, number of tickets, average claimed/closed time [STATS]

mentor view

  • only mentors can see
  • list current open ticket
  • claim a ticket
  • show the location of a ticket
  • close / reopen a ticket (does not delete)

Ticket Open Time

Have how long a ticket has been open displayed on open tickets. Should say xx minutes until it hits an hour. After that it should say xx hours.

Ticket Status Ordering

Edit the way the claim/closed system works for the tickets.

State: OPEN -> can be CLAIMED by Mentor/Admin
State: CLAIMED -> can be OPENED or CLOSED by Mentor/Admin
State: CLOSED -> can be REOPENED by Admin

Make sure to only display buttons related to the possible options for that particular ticket status

Styling Separation

Potentially move the useStyles hooks into a separate file if it's more than like 20 lines long (RE: ticket.index.js). Double check to see if this is possible.

Integrate Slack DM Endpoint

When a ticket is claimed, send a notification to both the mentor claiming, and the hacker who sent the ticket with a slack DM link

  • User notified when their Ticket is Claimed/Closed/Reopened
  • Associate user with Slack-ID, User should be able to know if they have a Slack-ID set or not
  • Modify NewTicket Panel UI to default to slack-ID instead of Contact if Slack-ID set (Dropdown to switch to contact?)
  • Mentor should be forced to have Slack-ID, otherwise cannot claim/close tickets (prompt to frontend?)
  • Upon Claiming Ticket, Mentor is given slack dm link (Should it also show up in user notification of claimed ticket?) -> feed ticket to backend and receive link

Elevate Navbar or scroll tickets

Most of this is already there, but essentially when a mentor or user scrolls, only the tickets should scroll while the navbar and ticket-submission-panel stays in place (the ticketpanel already does this, but the nav bar doesn't)

Admin Requests

Check how many requests are being made for the leaderboard and feedback pages for the admin page. We need to reduce how often these requests are being made.

Display User Name

Whenever someone opens a ticket, their name should be on that ticket so we know who we're talking to. In addition, on top of the ticket panel, add a "Hi there NAME \n How many we help you?"

  • Name of user who Opened Ticket is on Ticket
  • Send user's name when they post a ticket
  • Anonymous Checkbox option to send Anonymous name instead
  • Display Hi there "NAME"

MentorQ Mock

Create a Mock for MentorQ for the Material-UI redesign.

Better Wrapping for Long Tickets

perhaps detect when a ticket's comment is long and have it in its own row with other data in a second row at the bottom. this avoids the comment squishing all the other content on the ticket card

mock api: queue status

queue status is essentially an object {open:true|false,mentorsOnDuty:number}
the mock api needs

  • a way to set queue status
  • a way to attach a handler to get updates when the status has been updated

Active/Inactive Ticket Feature

  • Add an icon showing whether a ticket is active (two states: active, inactive)
  • All closed/cancelled tickets are inactive
  • Users/Mentors/Directors can change whether or not a ticket is active/inactive

Login Cleanup

  • Make it look cooler when we have an invalid login (also edit logic so loading state is not entered unless request is valid)
  • Hide Password field (Or at least toggle visibility)
  • Find a way to fix the Inputs for the login page (make white, enter should submit)
  • Add a header that says Sign In

Error Handling

Find a way to escape infinite loading when it arises (timeout)
Find a way to force logout when a user is logged in and LCS fails

Feedback Requests

Reduce Volume of Requests by only pulling most updated feedback on login and when edit feedback button is clicked. In addition, change ticket update interval from 3 seconds to 30 seconds

Delete and Cancel Tickets

Admin should be able to delete tickets

  • Post to backend to update ticket status to "Deleted"
  • Reflect change in the frontend (filter out "Deleted" tickets)

User should be able to cancel an open ticket (essentially like deleting a ticket)

** Things to consider **

  • Option to explain why ticket was deleted?
  • Mention something in frontend about the fact we're not truly deleting tickets

Ticket Volume

We want to reduce the amount a mentor/director needs to scroll to look at tickets especially if we have a ton of them open

  • Cap number of Open/Claimed Tickets a user can have at a time to 5

Mobile View

Modify certain components (Especially typography) to scale to Mobile.
Consider creating a separate navbar for mobile and separate out newticket form from the ticket list.
Think about how we want to represent the admin page for Mobile (More options in the navbar?)

Mentor Queue

Ability to mark mentors on/off duty and display the number of mentors who are active to hackers. (if 0, then queue is closed, otherwise is open)

Advertise Feedback

Show mentor feedback button on the non-expanded view of user's closed ticket (for ex: separate small feedback icon on top right corner of ticket)

Component Split up

  • Turn button and other small items into separate components to reduce code clutter
  • Other code cleanup and remove redundancies

Closing Claimed Ticket

Modify it such that only the Mentor who claimed a ticket can close it (a Mentor shouldn't be able to close another mentor's ticket)

Load New Tickets

Load a newly posted ticket from the user so they don't have to wait 30 seconds for it to update

Fix Time Open on Tickets

  • If time open is less than 1 hour, give time open in minutes
  • Only show time open for tickets with status "OPEN"

Handle JWT Token

Read in User/Mentor name and role data from JWT token passed in from backend.

stats view

  • show all tickets open and closed
  • show response/close times
  • other stats (todo)

Feedback System

Upon claiming ticket, Hacker, mentor, admin should be able to

  • See which mentor had claimed the ticket

Upon closing tickets, Hacker should be able to

  • Rate the experience with this specific mentor (out of 5 stars)
  • Give a short blurb about their experience

Admin Page

  • Should be able to view the average of ratings for each mentor that has closed a ticket
  • View feedback associated with all claimed tickets
  • Be able to open closed tickets

Maximum Comment Length

Give an error when the user inputs a comment that is longer than 255 characters while creating a ticket (cannot submit tickets with comments longer than 255 characters)

Force Slack Usage

force slack usage with mentorq.

  • if a user doesn't have a slack account linked, they cannot fill out the ticket
  • perhaps disable/gray out the submit button and show another button that says "link your slack account to create tickets" that sends you to the frontend page for linking slack accounts
  • if a user has a slack account linked, then this will be used for mentors to dm mentees on slack

Remove Location

Make the fields more modular, so removing/adding fields is as simple as saying enabled/disabled before every semester rather than having to modify tons of code and then re-adding it

Update Readme

Update Readme, add what our mission, history, how to set up etc...

Material-UI Redesign

Research Material-UI and work with frontend to make MentorQ design consistent with HackRU website. Frontend should only need to send us a theming file every semester to update our theme.

  • Login Page (Kayla)
  • Hacker/Admin/User Pages (Serena)

admin view

  • open close queue
  • set amount of mentors on duty

Integrate Feedback Endpoint

  • Create a feedback form with /5 rating and feedback box for hacker when a ticket is closed

  • Fetch feedback endpoint to display data on all closed tickets (feedback, rating)

  • Display ranking of mentors (admin only or everyone?)

login splash page

make a new page login/splash page. it should:

  • take in callback to handle login event
  • have a loading pinwheel type thing

hacker view

  • tell hacker if the queue is closed
  • show amount of mentors on duty
  • form for hacker to open ticket
  • tell hackers when their ticket is claimed and name the mentor on the way
  • add back map pinning

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.