- Authenticate via Discord OAuth
- Sign Out
- CRUD Challenges
- CRUD Questions
- CRUD Comments
-
= element*
= function
body
header
- a.img.home
* redirect to index
- h1
- a.img.user-avatar
main
section.challenge
div.container.challenge
- p.challenge-number
- h2
- embed.video
- p.desc
div.container.submit-project
- p.label
- h3
- p.desc
- button.submit.project
* onClick
* display submit-project modal
section.questions
- h2
- button.submit.question
* onClick
* display post-question modal
- ul.questions
- li.question
- span.author-name
- span.date-created
* if teacher commented
- img.answered
- p.question-title
* if teacher commented
- span.answer-count
* if has comments
- span.comment-count
- a.view-question
* onClick
* display question-detail view
...student view
difference:
section.challenge
div.container.view-submissions
- p.label
- h3
- p.desc
- button.view-submissions
* not implemented for v1
div.container.challenge
- p.challenge-number
- h2
- embed.video
- p.desc
section.questions.detail
- p.label
- h3
- button.back
* onClick
* display section.questions
div.container.question
- span.author-name
- span.date-created
- p.question-title
- p.question-body
* show <= 3 lines
* if > 3 lines
- button.show.more
* onClick
- p.question-body
- button.show.less
* onClick
* show <= 3 lines
div.container.comments
- ul.comments
- li.comment
- span.author-name
- span.time-created
- span.date-created
- p.comment-body
- input.text.comment
- placeholder
- img.submit.icon
- h3
- p.desc
- input.text.question-title
- placholder
- span.letter-count
- input.textarea.details
- button.cancel
* onClick
* close modal
- button.submit.post
* onClick
* make request to server
* add question to store
* close modal
- h3
- p.desc
- input.text.github-link
- placholder
- input.text.additional-link
- placholder
* optional
- input.textarea.comments
- placholder
* optional
- button.cancel
* onClick
* close modal
- button.submit.post
* onClick
* make request to server
* add project to store
* send email confirmation
* display project-submitted modal
- h3
- p.message
- button.close
* onClick
* close modal
User {
id
createdAt
name
email
password
avatarUrl
role [teacher, student]
[Questions]
}
Challenge {
id
createdAt
title
description
videoUrl
User
}
Question {
id
createdAt
title
body
User
[Comments]
}
Comment {
id
createdAt
body
User
}
/api/v1/
- route prefix
GET /user/:id
- get a userPOST /user
- create a userDELETE /user/:id
- delete a user
GET /challenge
- get all challengesGET /challenge/:id
- get a challengePOST /challenge
- create a challengePUT /challenge/:id
- update a challengeDELETE /challenge/:id
- delete a challenge
GET /question
- get all questionsGET /question/:id
- get a questionPOST /question
- create a questionPUT /question/:id
- update a questionDELETE /question/:id
- delete a question
GET /comment
- get all commentsGET /comment/:id
- get a commentPOST /comment
- create a commentPUT /comment/:id
- update a commentDELETE /comment/:id
- delete a comment
- ablity to search questions