{"id":13428190,"url":"https://github.com/ehzhang/helpq","last_synced_at":"2025-04-07T07:10:23.165Z","repository":{"id":28393874,"uuid":"31908137","full_name":"ehzhang/HELPq","owner":"ehzhang","description":"💁 an extensible real-time queue application, for mentorship @ hackathons and classrooms","archived":false,"fork":false,"pushed_at":"2020-02-11T21:16:24.000Z","size":3009,"stargazers_count":266,"open_issues_count":12,"forks_count":128,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-31T05:08:12.185Z","etag":null,"topics":["classroom","hackathon","javascript","mentorship","meteor"],"latest_commit_sha":null,"homepage":"http://ehzhang.com/HELPq-data","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehzhang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-09T16:00:23.000Z","updated_at":"2025-01-08T19:47:19.000Z","dependencies_parsed_at":"2022-09-03T14:41:38.100Z","dependency_job_id":null,"html_url":"https://github.com/ehzhang/HELPq","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehzhang%2FHELPq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehzhang%2FHELPq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehzhang%2FHELPq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehzhang%2FHELPq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehzhang","download_url":"https://codeload.github.com/ehzhang/HELPq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608151,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classroom","hackathon","javascript","mentorship","meteor"],"created_at":"2024-07-31T01:00:48.779Z","updated_at":"2025-04-07T07:10:23.133Z","avatar_url":"https://github.com/ehzhang.png","language":"JavaScript","readme":"HELPq\n======\n\nAn extensible, customizable real-time queue system, built with [Meteor](https://www.meteor.com/)!\n\n![Home Screen](./.docs/images/screenshots/home.png)\n\nWhat is this?\n------------\n\nHELPq was originally built for [HackMIT](https://hackmit.org), but has been used at hackathons like [Blueprint](http://blueprint.hackmit.org), [Meteor Summer Hackathon 2015](http://meteorhack.meteor.com/), [WHACK](http://wellesleyhacks.org/), [MakeMIT](http://makemit.org/) and [WildHacks](http://wildhacks.org/) (among others!).\n\nIt is a real-time help queue and mentor management application, targeted at hackathons and classrooms, where there is a need for issues to be claimed and satisfied within minutes. It includes a simple interface for requesting tickets, claiming tickets, administrating users/mentors, and examining metrics.\n\n\nIt is built with an emphasis on three fundamental user experiences:\n\n### Keep it simple\n\nStudents should be able to log in and do exactly what they want - submit a ticket. Nothing more complicated than that.\n\n### Pull, don't Push\n\nMentors should not receive any type of push notifications when tickets are requested. Instead, mentors should be pulling from the mentor view and claiming tickets whenever they see them. That way, mentors will not get annoyed by a feed of requests and instead provide high-quality advice because they are themselves actively seeking out people to help.\n\n### Encourage in-person interaction\n\nMentors can claim tickets, complete tickets, or choose to reopen them. Mentors can only claim a single ticket at any given time. There is no ability to message a student through the app in order to encourage a mentor to find that student and help them in person. A student can, however, choose to include other contact information in case contact is needed to clarify location.\n\nFeatures\n---------\n\n### Home\n\n![Home Screen Labeled](./.docs/images/screenshots/home-labeled.png)\n\n#### 1 - Ticket Request\n\nUsers can request a ticket, by providing their problem description, where they are, and how they can best be contacted. This copy can be easily modified in one of the config files!\n\nOnce submitted, users have an option to cancel their ticket (\"Nevermind!\"). Tickets will also expire based on a value determined by the admin.\n\n#### 2 - Announcements\n\nAdmin can send out announcements with varying colors through the admin dashboard, which appear on on the home screen.\n\n#### 3 - Mentor Status\n\nThe mentor status bar shows how many mentors are currently online, and calculates the expected wait time based on historical ticket claim and completion times.\n\n#### 4 - Current Queue\n\nThe current queue shows who is currently in the queue and which people are currently receiving help. Because the nature of questions available mentors can address are highly variable, tickets will often not be answered in order of submission.\n\n### Mentor\n\n![Mentor Screen Labeled](./.docs/images/screenshots/mentor-labeled2.png)\n\nMentors should be mobile, and the HELPq is designed for mentors to browse the help tickets on their smart phones.\n\nIf a user is a mentor, they will have an inbox icon in the top right they can click to navigate to the mentor view. If the HELPq is being viewed on mobile or a very narrow window, the app is responsive and will pull up a navigation bar on the bottom for Home, Mentor, and Profile.\n\n\n#### Claim\n\nYou can claim a ticket by selecting \"Claim Ticket\". This will notify the user that you are on your way! Once a ticket is claimed, you cannot claim another ticket unless you complete or reopen the ticket.\n\n#### Complete\n\nOnce you are done working with a student, you should mark that ticket as completed. This will give the student an opportunity to rate their experience with you!\n\n#### Reopen\n\nYou can choose to reopen the ticket if you feel like you could not adequately solve the problem, or think someone would be better at addressing it.\n\n### Admin\n\n![Admin Users](./.docs/images/screenshots/admin-metrics.png)\n\nThe admin dashboard has a lot of useful features for hackathon organizers or class staff! Shown above is the Metrics dashboard.\n\n#### Announce\n\nThe announcement section allows you to create announcements for the home screen, with a variety of different colors.\n\n#### Users\n\nThe users table lets you see all of the current users, and mark them as mentors or admins. You can also edit other user's information - of course, be responsible with this power!\n\n#### User Creation\n\nLogin is done through Github or Facebook (which can be enabled or disabled in a config file), but you can manually create user accounts.\n\nThis takes a CSV formatted string, which will then check your format, and create users asynchronously. If a user's account creation fails, the result will be shown.\n\nThis feature was designed for use in classroom settings, or other restricted access settings, so that you can create an account for each student and a password unique to them.\n\nThis feature is also useful for when a user does not want to login with Facebook or GitHub (even though only public information is retrieved).\n\n#### Tickets\n\nThe tickets table will show you a history of all tickets.\n\n- Green: tickets have been completed\n- Red: tickets that have been cancelled\n- Yellow: tickets that have expired\n- Grey: tickets that are currently claimed\n\n#### Metrics\n\nThe metrics pane shows a lot of information regarding the usage of the queue.\n\nThe first is a metrics summary, which includes average, median, and std dev of response time and completion time, as well as the raw average of all ticket ratings.\n\nThe leaderboard also shows the top 10 mentors with ratings. Their rating is not a raw average of their tickets, but instead blurred slightly with weighting. This is to avoid the situation where a user with a single 5 star rating would be listed above another user with four 5 star ratings and a single 4 star rating.\n\n#### Feedback\n\nThe feedback section is a feed of all mentor feedback, with star rating and a note. Bad ratings are highlighted.\n\n#### Settings\n\nSettings allows you to adjust various settings in the queue. Right now, you can open/close the queue and set the time for when tickets expire.\n\n\nUsage Data\n----------\n\nWe've used this at a bunch of hackathons and we have some data on them :)\n\n| Hackathon | Date | Response time average | median | stddev | Completion Time average | median | stddev | Rating Average | Users | Mentors | Tickets|\n|-----------|------|-------------------|--------|---------|---------------------|--------|---------|------------|-------|---------|--------|\n|**Blueprint High School Hackathon 2015** | 2/22/2015 | 5:11 | 1:26 | 9:54 | 10:37 | 6:29 | 13:23 | 4.9 | 193 | 64 | 170 |\n|**Meteor Summer Hackathon 2015** | 8/8/2015 | 6:21 | 2:29 | 10:58 | 5:46 | 1:26 | 12:03 | 4.09 | 68 | 66| 37 |\n|**HackMIT 2015** | 9/19/2015 | 9:37 | 2:48 | 28:00 | 16:30 | 10:01 | 22:59 | 4.7 | 425 | 242 | 502 |\n|**WHACK 2015** | 10/3/2015 | 7:55 | 4:56 | 12:30 | 18:19 | 13:02 | 17:27 | 4.9 | 87 | 39 | 94 |\n|**HackIllinois**| 2/19/2016 | 56:00 | 8:47 | 3:00:29 | 32:53 | 18:46 |  1:00:25 | 4.6 | 353 | 353 | 221 |\n\nBring HELPq to your hackathon/classroom!\n========================================\n\nRequirements\n------------\n\nMake sure that you have `meteor` installed.\nYou can install Meteor through their [website.](https://www.meteor.com/)\n\n\nQuickstart\n----------\n\n#### Heroku\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/ehzhang/HELPq/tree/master)\n\nWhen deploying to Heroku, you **must** set at least the `ROOT_URL` and `ADMIN_PASSWORD` environment variables.\n\n#### Mac OS X, Linux\n\n```sh\n  ./create_config\n  meteor\n```\n\n#### Windows:\n\nCopy the `private/config.json.template` into `private/config.json`\n\n```sh\n  meteor\n```\n\nDeploy\n------\n**IMPORTANT**\n\nWithout login configuration, you will only be able to login with the admin username and password specified in `private/config.json` (or the corresponding environment variables).\n\nIf you're not using Heroku, you can deploy with:\n\n```sh\n  meteor deploy \u003cyour domain name\u003e.meteor.com\n```\n\nConfiguration\n-------------\n\n#### Login\n\nTo configure login, edit `private/config.json`. Alternatively, you can configure login using the environment variables listed in `app.json` (this is especially useful when using Heroku).\n\nIn `private/config.json` (or the corresponding environment variables), provide the appropriate application id/secret combinations for either Facebook or Github authentication, or choose to disable them.\n\n#### Branding\n\nFor front end branding, edit `client/stylesheets/scss/_branding.scss`\n\nIn this file, you will find brand variables and classes for the main splash and main banner.\n\nYou can edit these and observe the changes. There are also comments to explain what each setion does.\n\n#### Copy\n\nTo edit copy, edit `lib/constants.js`.\n\nIn this file, you will find a place where you can change various strings across the site, including the title of your app.\n\nOrientation\n-----------\n\nThe queue has been found to be most effective with an orientation with mentors and a tight integration with the way a hackathon/classroom manages mentorship. If you'd like to talk about how this could work for your hackathon/classroom, don't hesitate to email me at [ehzhang@mit.edu](mailto:ehzhang@mit.edu)!\n\nFeedback\n--------\n\nHave you used HELPq or are planning to use it at your hackathon? I'd love to hear how effective it was, what kinds of metrics you got, and what kinds of things people wanted. Don't hesitate to email me at [ehzhang@mit.edu](mailto:ehzhang@mit.edu)!\n\nContributing\n------------\n\nI'd love to take pull requests! Please read the [Contributing Guide](CONTRIBUTING.md) first!\n","funding_links":[],"categories":["mentorship","Tooling"],"sub_categories":["Coaching"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehzhang%2Fhelpq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehzhang%2Fhelpq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehzhang%2Fhelpq/lists"}