An engaging educational game designed to raise awareness about best safety practices during natural disasters
- JavaScript
- Node
- Express
- MongoDB
- postman collection can be found here
npm install
- MONGODB_URI
- PORT
npm run dev
field | data_type | constraints |
---|---|---|
first_name | string | required |
last_name | string | required |
username | string | required, unique |
string | required, unique | |
password | string | required |
-
Route: /auth/signup
-
Method: POST
👇 Body
{
"first_name": "John",
"last_name": "Doe",
"username": "doe",
"email": "[email protected]",
"password": "doe",
}
👇 Response
{
"success": true,
"message": "user successfully created"
}
-
Route: /auth/login
-
Method: POST
👇 Body
{
"username": "doe",
"password": "doe",
}
👇 Response
{
"success": true,
"message": "Login successful",
"token": "token",
"username": "doe"
}
-
Route: /auth/google
-
Method: GET
👇 Response
- username will only be included in the response if it exists
{
"success": true,
"message": "Authentication successful",
"token": "token"
}
-
Route: /profile
-
Method: GET
-
Header
- Authorization: Bearer {token}
👇 Response
{
"success": true,
"user": {
"first_name": "doe",
"last_name": "doe",
"username": "doe",
"email": "[email protected]"
}
}
-
Route: /profile
-
Method: PUT
-
Header
- Authorization: Bearer {token}
👇 Body
- users can update their choose to update their first name, last name or username
{
"first_name": "doe1",
"last_name": "doe1",
"username": "doe1"
}
👇 Response
{
"success": true,
"message": "profile successfully updated",
"user": {
"first_name": "doe1",
"last_name": "doe1",
"username": "doe1"
}
}
-
Route: /leaderboard
-
Method: GET
-
Header
- Authorization: Bearer {token}
👇 Response
[
{
"scores": {
"tornadoGame": {
"score": 2000
}
},
"username": "scar"
},
{
"scores": {
"tornadoGame": {
"score": 1500
}
},
"username": "ben"
}
]
let socket = io('https://lifeline-1zrj.onrender.com', {
extraHeaders: {
Authorization: "Bearer token",
}});
socket.emit('getNextPrompt', promptInfo)
//if promptType is a question prompt
promptInfo = {title, promptType, text, score}
//for other promptTypes
promptInfo = {title, score, promptType}