Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Queue provides a FREE Q&A solution for online teaching!

Notifications You must be signed in to change notification settings

BenElferink/queue

Repository files navigation

Queue - FREE Q&A solution for online teaching!

  • Voice to text conversion! (supported on Chrome)
  • Download PDF of answered history!
  • Real-time data!
  • Complete privacy! (all data is cleared after 12h)
  • Notifications with a timer!
  • Easy invite!

  • And more..!

Technologies used:


API HTTP routes

GET /room/:id (no-auth)

params:

:id === mongoose.Schema.Types.ObjectId

response:

{
message: "room requested",
roomId: mongoose.Schema.Types.ObjectId,
host: {
_id: mongoose.Schema.Types.ObjectId,
username: String,
}
}


API socket.io events

on create (no-auth)

body:

{
username: String,
}

response: emit created + join(roomId)

{
message: "created room",
roomId: mongoose.Schema.Types.ObjectId,
token: jsonwebtoken,
}

on join (no-auth)

body:

{
roomId: mongoose.Schema.Types.ObjectId,
username: String,
}

response: emit joined + join(roomId)

{
message: "joined room",
roomId: mongoose.Schema.Types.ObjectId,
queue: [
{ type: mongoose.Schema.Types.ObjectId, ref: 'Quest' }
],
token: jsonwebtoken,
}

on refetch (auth-TOKEN)

body:

{
token: jsonwebtoken,
}

response: emit refetched + join(roomId)

{
message: "room fetched",
roomId: mongoose.Schema.Types.ObjectId,
queue: [
{
from: {
_id: mongoose.Schema.Types.ObjectId,
username: String,
},
question: String,
answer: String,
answered: Boolean,
} ...
],
}

on ask (auth-TOKEN)

body:

{
token: jsonwebtoken,
question: String,
}

response: io.to.(roomId) --> emit asked

{
message: "question asked",
roomId: mongoose.Schema.Types.ObjectId,
quest: {
from: {
_id: mongoose.Schema.Types.ObjectId,
username: String,
},
question: String,
answer: String,
answered: Boolean,
}
}

on answer (auth-TOKEN)

body:

{
token: jsonwebtoken,
questId: mongoose.Schema.Types.ObjectId,
answer: String,
}

response: io.to.(roomId) --> emit answered

{
message: "question answered",
roomId: mongoose.Schema.Types.ObjectId,
quest: {
from: {
_id: mongoose.Schema.Types.ObjectId,
username: String,
},
question: String,
answer: String,
answered: Boolean,
}
}

on delete-quest (auth-TOKEN: quest owner or host)

body:

{
token: jsonwebtoken,
questId: mongoose.Schema.Types.ObjectId,
}

response: io.to.(roomId) --> emit deleted-quest

{
message: "question deleted",
roomId: mongoose.Schema.Types.ObjectId,
questId: mongoose.Schema.Types.ObjectId,
}

on delete-room (auth-TOKEN: host)

body:

{
token: jsonwebtoken,
}

response: io.to.(roomId) --> emit deleted-room

{
message: "room deleted",
roomId: mongoose.Schema.Types.ObjectId,
}

About

Queue provides a FREE Q&A solution for online teaching!

Topics

Resources

Readme

Stars

Watchers

Forks

Contributors