Skip to content

BYUCS452F2020/the-council

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

thecouncil

Meaning of Council

Submit your problem, question, decision, and let the Council decide your fate.

The identity of the councilmembers are hidden, yet their vast wisdom shall be on full display. Councilmembers may vote to bring on a new member, yet this occurence is rare and only happens in times of great necessity. Their discretion is guaranteed, unless you decide to share the great knowledge you have gained.

To be hosted on a basic SQL server to start with, then I'm leaning on firebase afterwards. The council should begin with 4 members.

The Council
Jaden Lorenc
Robert Nay
Primary Keys are bolded

Project Schema

Role (RoleId, Title)

  • Roles that users can have
  • Each user will have one role. Title is regular user, councilmember, moderator, etc.

User (UserId, UserName, Email, Password, RoleId)

  • Foreign Key RoleId references Role
  • Users and their roles. User logs in with email and (hashed) password, and username is a public pseudonym.

AuthToken (Token, UserId)

  • Foreign Key UserId references User
  • Authentication tokens given to users upon login. Used to prevent unauthorized access.

ProspectiveCouncilmember (ProspectiveUserId, NominatedBy, CampaignText)

  • Foreign Key ProspectiveUserId references User
  • Foreign Key NominatedBy references User

CouncilmemberVote (ProspectiveUserId, VoterUserId)

  • Foreign Key ProspectiveUserId references User
  • Foreign Key VoterUserId references User
  • Votes of existing councilmembers (VoterUserId) to promote other users (ProspectiveUserId) to councilmembers.

Question (QuestionId, AskerId, Timestamp, Header, Body)

  • Foreign Key AskerId references User
  • A list of questions presented to the council by the user. AskerId stores the UserId of the person who asked the question. Timestamp stores when that happened. Header and body store the main header and the body of the question asked.

Answer(AnswerId, QuestionId, CouncilmemberId, Timestamp, Header, Body)

  • Foreign Key QuestionId references Question.
  • Foreign Key CouncilmemberId references User
  • A list of answers provided by councilmembers. QuestionId references the question this answer answers. CouncilmemberId stores the UserId of the person who answered the question. Timestamp stores when that happened. Header and body store the main header and the body of the answer.