Skip to content

Latest commit

 

History

History
152 lines (128 loc) · 3.93 KB

todo.md

File metadata and controls

152 lines (128 loc) · 3.93 KB

Basic project setup

Auth

  • Create user controller
  • Set up auth provider
  • Registration
  • Login
  • Permissions per page

Models

  • Users

  • Name

  • Email

  • Password

  • Role (Admin, Applicant, Judge, Observer)

  • Questions

  • Question

  • Type (Input, Text, Dropdown, Boolean, File)

  • Options (Text, only used for dropdowns for now)

  • Required

  • Parent

  • Order

  • Applications

  • Name

  • Description

  • Status (New, Submitted, Review, Follow Up, Accepted, Rejected)

  • Objective Score

  • Subjective Score

  • Total Score

  • Scored (Boolean)

  • User ID

  • Answers

  • Application ID

  • Question ID

  • Answer

  • Documents

  • Name

  • Description

  • File

  • Application ID

  • Answer ID (Nullable, cascade on delete set null)

  • User ID (Useful for tracking if admins have attached a file to an application)

  • Criteria

  • Question

  • Type (Objective, Subjective)

  • Required

  • Parent

  • Order

  • Scores

  • Score

  • Answer

  • Application ID

  • Criteria ID

  • User ID (Judge)

  • Judged

  • Application ID

  • User ID (Judge)

  • Feedback

  • Message (So judges can ask questions or give criticism)

  • Type (Input, Text, Dropdown, Boolean, File)

  • Options (Text, only used for dropdowns now)

  • Response (Response from the user)

  • Application ID

  • User ID (Which judge requested the feedback)

  • Regarding ID (The ID of the data this feedback is related to, if any)

  • Regarding Type (Can be a question or a document)

  • Notifications

  • Type (Info, Warning, Email)

  • Status (New, Sent)

  • Message

  • Metadata (Some notifications are queued and combined into a single message)

  • User From

  • User To

Pages

  • Home page
  • User dashboard
  • Admin dashboard
  • Judge dashboard
  • Create question
  • Create application
  • Answering questions
  • Judging applications
  • Follow up questions

Relationships

  • One to many + One to one between users <-> applications
  • One to one + One to many between answers <-> applications
  • One to one between answers -> questions
  • One to many + One to one between questions <-> question children
  • One to many + One to one between applications <-> documents
  • One to many + One to one between questions <-> documents
  • One to one between documents -> judges (users)
  • One to one + One to many between feedback <-> applications
  • One to one between feedback -> judges (users)
  • One to one polymorphic between feedback -> answers and documents
  • One to one + One to many between scores <-> applications
  • One to one between scores -> critera
  • One to one between scores -> judges (users)

Defined Events

  • User Registered
  • Application Submitted
  • Application Needs Review
  • Application Accepted
  • Application Rejected

Event Handlers

  • Send user email when user is registered
  • Send judges email when application is submitted
  • Send user email when application feedback is requested
  • Send judge email when application feedback is answered
  • Send user email when application is accepted / rejected
  • Send judge email when application is accepted / rejected
  • Send admins all activity

User Workflow

  • Create application
  • Update application
  • Answer questions
  • Uploading files
  • Review page
  • Submitting applications
  • Server-side checking for required answers
  • AJAX autosave for answers

Judge Workflow

  • View submitted applications
  • Remove per-question rating options
  • Display judge criteria on review page
  • AJAX autosave for judge answers / ratings
  • Judge submitting final answers / ratings
  • Server-side checking for required answers
  • Score aggregation when ratings are submitted
  • Provide feedback
  • Approve / deny applications