Skip to content

Commit 4c50729

Browse files
committed
Update docs and contributing guide
1 parent e253278 commit 4c50729

File tree

9 files changed

+254
-21
lines changed

9 files changed

+254
-21
lines changed
541 KB
Loading
387 KB
Loading
370 KB
Loading

.docs/images/screenshots/home.png

343 KB
Loading
263 KB
Loading

CONTRIBUTING.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Contributing to HELPq
2+
=====================
3+
4+
Thank you for using HELPq, and we're really excited that you want to help out!
5+
6+
Development Process
7+
-------------------
8+
9+
This project is developed mostly by me (Edwin Zhang), but quite a few hackathons have their own forks. Releases to master can be expected to be stable and ready to use (with configuration, of course), but dev will be the most up to date.
10+
11+
Pull Requests
12+
-------------
13+
14+
We actively welcome your pull requests!
15+
16+
However, before you begin, please create an issue so we can determine if the work, feature, or bugfix either has someone is already working on it as a part of the current roadmap, or if the feature is not something that would belong in the HELPq as a core feature.
17+
18+
This is mostly meant for discussion, so we can discuss things fully and make a really awesome product :)
19+
20+
Issues
21+
------
22+
23+
We use issues to track public bugs. Please make sure your description is clear and has sufficient instructions to be able to reproduce the issue.
24+
25+
We also use issues to track feature requests and discuss. Please mark your issue as 'Feature Request' in this case!
26+
27+
28+
Coding Style
29+
------------
30+
31+
Keep it clean, and keep things modular!

README.md

+191-9
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,219 @@
11
HELPq
2+
======
23

34
An extensible, customizable real-time queue system, built with [Meteor](https://www.meteor.com/).
45

5-
** This is beta release. This queue is fully functional, but code will move around and features will be added over the next few months. Keep checking back for the most up to date. **
6+
![Home Screen](./.docs/images/screenshots/home.png)
7+
8+
[Go directly to setup information](#bring-helpq-to-your-hackathonclassroom)
9+
10+
What is this?
11+
------------
12+
13+
HELPq 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!).
14+
15+
It 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.
16+
17+
It is built with an emphasis on three fundamental user experiences:
18+
19+
### Keep it simple
20+
21+
Students should be able to log in and do exactly what they want - submit a ticket. Nothing more complicated than that.
22+
23+
### Pull, don't Push
24+
25+
Mentors 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.
26+
27+
### In-person interaction
28+
29+
Mentors 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.
30+
31+
32+
Features
33+
---------
34+
35+
### Home
36+
37+
![Home Screen Labeled](./.docs/images/screenshots/home-labeled.png)
38+
39+
#### 1 - Ticket Request
40+
41+
Users 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!
42+
43+
Once submitted, users have an option to cancel their ticket ("Nevermind!"). Tickets will also expire based on a value determined by the admin.
44+
45+
#### 2 - Announcements
46+
47+
Admin can send out announcements with varying colors through the admin dashboard, which appear on on the home screen.
48+
49+
#### 3 - Mentor Status
50+
51+
The mentor status bar shows how many mentors are currently online, and calculates the expected wait time based on historical ticket claim and completion times.
52+
53+
#### 4 - Current Queue
54+
55+
The 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.
56+
57+
### Mentor
58+
59+
![Mentor Screen Labeled](./.docs/images/screenshots/mentor-labeled2.png)
60+
61+
If 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.
62+
63+
Mentors should be mobile, and the HELPq is designed for mentors to browse the help tickets on their smart phones.
64+
65+
#### Claim
66+
67+
You 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.
68+
69+
#### Complete
70+
71+
Once 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!
72+
73+
#### Reopen
74+
75+
You 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.
76+
77+
### Admin
78+
79+
![Admin Users](./.docs/images/screenshots/admin-metrics.png)
80+
81+
The admin dashboard has a lot of useful features for hackathon organizers or class staff! Shown above is the Metrics dashboard.
82+
83+
#### Announce
84+
85+
The announcement section allows you to create announcements for the home screen, with a variety of different colors.
86+
87+
#### Users
88+
89+
The users table lets you see all of the current users, and mark them as mentor or admins. You can also edit other user's information - of course, be responsible with this power!
90+
91+
#### User Creation
92+
93+
Login is done through Github or Facebook (which can be enabled or disabled in a config file), but you can manually create user accounts.
94+
95+
This 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.
96+
97+
This 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.
98+
99+
This feature is also useful for when a user does not want to login with Facebook or GitHub (even though only public information is retrieved).
100+
101+
#### Tickets
102+
103+
The tickets table will show you a history of all tickets.
104+
105+
- Green: tickets have been completed
106+
- Red: tickets that have been cancelled
107+
- Yellow: tickets that have expired
108+
- Grey: tickets that are currently claimed
109+
110+
#### Metrics
111+
112+
The metrics pane shows a lot of information regarding the usage of the queue.
113+
114+
The 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.
115+
116+
The 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.
117+
118+
#### Feedback
119+
120+
The feedback section is a feed of all mentor feedback, with star rating and a note. Bad ratings are highlighted.
121+
122+
#### Settings
123+
124+
Settings 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.
125+
126+
127+
Usage Data
128+
----------
129+
130+
We've used this at a bunch of hackathons and we have some data on them :)
131+
132+
| Hackathon | Date | Response Time (avg, median, std dev) | Completion Time (avg, median, std dev) | Rating Avg | Total Users | Total Mentors | Total Tickets|
133+
|-----------|------|--------------------------------------|----------------------------------------|------------|-------------|---------------|--------------|
134+
|**Blueprint High School Hackathon 2015** | 2/22/2015 | 5 min 11 sec, 1 min 26 sec, 9 min 54 sec | 10 min 37 sec, 6 min 29 sec, 13 min 23 sec | 4.9 | 193 | 64 | 170 |
135+
|**Meteor Summer Hackathon 2015** | 8/8/2015 | 6 min 21 sec, 2 min 29 sec, 10 min 58 sec | 5 min 46 sec, 1 min 26 sec, 12 min 3 sec | 4.9 | 68 | 66| 37 |
136+
|**HackMIT 2015** | 9/19/2015 | 9 min 37 sec, 2 min 48 sec, 28 min | 16 min 30 sec, 10 min 1 sec, 22 min 59 sec | 4.7 | 425 | 242 | 502 |
137+
|**WHACK 2015** | 10/3/2015 | 7 min 55 sec, 4 min 56 sec, 12 min 30 sec | 18 min 19 sec, 13 min 2 sec, 17 min 27 sec | 4.9 | 87 | 39 | 94 |
138+
139+
140+
Bring HELPq to your hackathon/classroom!
141+
========================================
6142

7143
Requirements
8144
------------
9145

146+
Make sure that you hate `meteor` installed.
147+
You can install Meteor through their [website.](https://www.meteor.com/)
148+
149+
10150
Quickstart
11151
----------
152+
153+
#### Mac OS X, Linux
154+
12155
```sh
13156
./create_config
14157
meteor
15158
```
16159

160+
#### Windows:
161+
162+
Copy the `private/config.json.template` into `private/config.json`
163+
164+
```sh
165+
meteor
166+
```
167+
168+
Deploy
169+
------
170+
**IMPORTANT**
171+
172+
Without login configuration, you will only be able to login with the admin username and password specified in `private/config.json`.
173+
174+
To change the password of the admin account after deployed, you must manually remove the admin user through the meteor mongo shell, and then redeploy with a new admin username/password value. *This will be changed pretty soon*
175+
176+
Deploy with:
177+
178+
```sh
179+
meteor deploy <your domain name>.meteor.com
180+
```
181+
17182
Configuration
18183
-------------
19-
For front end branding, edit `client/stylesheets/scss/_branding.scss`
20184

21-
To edit text, edit `lib/constants.js`
185+
#### Login
22186

23187
To configure login, edit `private/config.json`
24188

25189
In `private/config.json`, provide the appropriate application id/secret combinations
26190
for either facebook or github authentication, or choose to disable them.
27191

28-
This will also contain the admin account username and password you'll use for the initial login.
192+
#### Branding
29193

30-
Deploy
31-
------
194+
For front end branding, edit `client/stylesheets/scss/_branding.scss`
195+
196+
In this file, you will find brand variables and classes for the main splash and main banner.
197+
198+
You can edit these and observe the changes. There are also comments to explain what each setion does.
199+
200+
#### Copy
32201

33-
Deploy with `meteor deploy <your domain name>.meteor.com`
202+
To edit copy, edit `lib/constants.js`.
34203

35-
Login as an Admin to grant yourself mentor/admin access using the username/password specified in
36-
your `config.json` file.
204+
In this file, you will find a place where you can change various strings across the site, including the title of your app.
205+
206+
Orientation
207+
-----------
208+
209+
The 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 [[email protected]](mailto:[email protected])!
210+
211+
Feedback
212+
--------
213+
214+
Have 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 [[email protected]](mailto:[email protected])!
215+
216+
Contributing
217+
------------
37218

219+
I'd love to take pull requests! Please read the [Contributing Guide](CONTRIBUTING.md) first!

client/stylesheets/scss/_branding.scss

+30-10
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
// danger: generally some sort of red to indicate danger
88
//------------------------------
99

10-
// Primary color of your brand
10+
// Primary color of your brand (Used for primary buttons, glows, etc.)
1111
$brand-primary: #137DC3;
1212

13-
// Secondary color of your brand
13+
// Secondary color of your brand (used for secondary buttons)
1414
$brand-secondary: #FFBF0A;
1515

1616
// Success Buttons
@@ -40,6 +40,9 @@ $github-gray: #e4e4e4;
4040
// Change the default fonts.
4141
// font-stack: base fonts
4242
// logo-font: font for the logo
43+
//
44+
// To use fonts other than Lato/Montserrat, edit client/app.html to include
45+
// the appropriate fonts.
4346
//------------------------------
4447

4548
// Styling for the fonts
@@ -61,24 +64,41 @@ $github-gray: #e4e4e4;
6164
// Set branding here by changing up the color of text and the background images
6265
// or background color.
6366
//------------------------------
67+
68+
// The splash is the login page.
6469
#splash {
70+
71+
// There are a few defaults that are here, which you can comment/uncomment,
72+
// but you should feel free to change this to whatever you want.
73+
74+
// Font color
6575
color: white;
66-
background: $brand-primary;
6776

68-
// Comment these two lines if you want a single image to cover the entire page.
69-
// background: url(/assets/images/background.jpg) no-repeat center center;
70-
// background-size: cover;
71-
// background: $brand-primary;
77+
// Basic white text on brand color:
78+
// background: $brand-primary;
79+
80+
// Single background image covering the entire page
81+
// background: url(/assets/images/background.jpg) no-repeat center center;
82+
// background-size: cover;
83+
84+
// Background image that repeats
7285
background: url(/assets/images/geometry2.png) repeat;
7386
}
7487

7588

7689
// Banner which appears under the nav, and on each page.
7790
#banner {
91+
// Font color
7892
color: white;
79-
// background: url(/assets/images/background.jpg) no-repeat center center;
80-
// background-size: cover;
81-
// background: $brand-primary;
93+
94+
// Single background image covering
95+
// background: url(/assets/images/background.jpg) no-repeat center center;
96+
// background-size: cover;
97+
98+
// Basic white on brand color:
99+
// background: $brand-primary;
100+
101+
// Repeated Background:
82102
background: url(/assets/images/geometry2.png) repeat;
83103
}
84104

private/config.json.template

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
"password": "hunter2"
55
},
66
"github": {
7-
"enable": true,
7+
"enable": false,
88
"clientId": "github-client-id",
99
"secret": "github-secret"
1010
},
1111
"facebook": {
12-
"enable": true,
12+
"enable": false,
1313
"appId": "facebook-client-id",
1414
"secret": "facebook-secret"
1515
},

0 commit comments

Comments
 (0)