Apply Now View Instructions View Rubric
Exam
Please build the back-end for a question-and-answer app (Destkop UI mockup below)
- Must use Firebase for back-end.
 
Desktop UI
Requirements
- Must have an extremely simple front-end to test your back-end functions.
 - Can be HTML/CSS.
 - No need to use any fancy frameworks for front-end placeholder. You will not be graded on front-end.
 - Must host your back-end on Firebase.
 - This is a not a front-end exam. Client side should only be to test your back-end functions.
 
Reminders
- Develop a few features well is better than many features poorly.
 - Please upload your code to GitHub/GitLab.
 - At 2.5-hour:
 
- Please submit what you’ve completed, regardless of whether you’ve finished or not.
 - Launch to host your live site.
 
- Submit demo site URL.
    
- Make sure to complete this Exam Submission Form .
 
 
Features Rubric
| Score | Feature | 
|---|---|
| 90 | Sending Email (mandatory) | 
| 45 | Question DB | 
| 70 | Query DB | 
| 35 | Google OAuth and User DB | 
| 60 | Track User Answer and Accuracy | 
Features List
Choose any of the following features to implement. There is no required ordering.
1. Sending Email (mandatory)
- This question is required for all full-stack and back-end test takers.
 - Please develop a simple send email message function, so that users can fill out a form on the webpage and send the text message in the text fields to
 - 
    
Use Node Mailer or SMTP JS
 - Develop a simple form that allows users to fill out some messages.
 - 2 user-input text fields: subject and body (refer to the topic and content fields of a similiar front-end sample image).
 - A simple send message button.
 - The front-end UI is simple. The design does not count, because it is a full-stack/back-end exam; it only has to be functional.
 - Our test-passing criterion is whether the message written by user will be successfully emailed to .
 
2. Question DB
- 
    
Populate Firebase DB with Google Sheet
 - Store and display 
question_textfor each question. - Store and display 
question_titlefor each question. - Store and display all 
hashtagsfor each question. - Store and use 
/problem/<question_id>in routing URL. 
3. Query DB
- Use Firebase Queries to query Question DB using hashtags.
 - Build very simple front-end selection boxes to build filter/search URL.
 - Map search URL to Firebase Query.
 - Return problems that match any hashtags in our search URL.
 - Display total number of questions that satisfy filter conditions, out of total possible available questions in DB.
 
4. Google OAuth and User DB
- Implement Google OAuth and user database in Firebase.
 - Store and display user name and email in a separate simple webpage.
 - Use 
/user/<user_id>in routing URL. 
5. Track User Answer and Accuracy
- Create simple input box for user to input answer to each question.
 - Use the 
answercolumn to determine if question answered correctly. - Update the following metrics for each user and display in client side.
    
- Accuracy. Number of problems correct divided by number of problems completed.
 - Completed. Total number of problems completed.
 - Correct. Total number of problems correct.