Skip to content
smlardin edited this page Sep 19, 2011 · 6 revisions

Back Channel Project

I figured we could use the built-in Wiki to do the design instead of a Google doc. I also worked up a tentative Database design.

Features to Support

  • Anyone can create an account by filling out a form that comes up on the homepage of the app.

    • homepage that shows a login / logged in div at the top like the most current forums

    • homepage shows top questions

    • maintain cookie for login

    • do we want to list questions without replies differently than questions with replies?

    • do we want to keep "last reply" (by date) with non-replies so we can easily get posts by most recent activity?

  • Any user with an account can post.

    • validate logged in before showing post button
    • validate logged in, in controller when posting
  • Anyone (account or not) can search by user or content, by using the Search box on the homepage.

    • homepage shows a search box, this header should be on every page?
    • search page is the same as the home page with a filter applied to it?
  • Any logged-in user can “up vote” any post.

    • validate logged in before adding vote button

    • validate not voted before adding vote button

    • validate not voted in controller

    • table post-votes

    • can a user un-"up vote" a post?

  • The system maintains a count of votes for each post.

    • table post-votes / calculate for each post/reply on the fly
  • When the system displays a post, next to the post should be the number of votes.

    • table post-votes

    • does the system display the number of votes for a reply?

  • You cannot vote your own posts.

    • remove vote button in the view for owner posts
    • validate not owner in controller
  • You cannot vote the same post more than once.

    • remove vote button in the view for posts we've already voted on
    • validate haven't voted in the controller
  • Any logged-in user can reply to a post (but not to a reply; i.e., only to a depth of 1).

    • remove reply button if not logged in
    • validate reply is valid in the controller
  • A user can also vote a reply (by someone else).

    • same logic as above for voting, can't vote for your own
  • The most active questions are displayed at the top. Number of votes as well as time elapsed should be used as a metric to decide that. For example, you can assign each question a fixed weight, which decays over time. Use this weight along with the number of votes to calculate the final metric which decides the most active questions. Feel free to design your own metric, along these general lines. For example, you may wish to use a metric which eventually decays to 0, at which time the question is hidden.

    • do we have to get all of the questions to perform this metric?
  • If a user logs in as an admin, (s)he sees a different interface from what non-admins see.

    • extra fields for deleting posts on the same interface
  • Administrators can create other admin accounts.

    • special add/remove users page
  • Administrators can delete posts and users.

    • special button on the normal screen for deleting posts
    • special page listing all of the posts by date for deletion
    • if a user is deleted we also delete the content (posts and votes) they've created created
  • View reports on post activity, including number of votes for each post such that it is possible to use this report to assign grades.

    • special page for counting "replies to" for each top level question
    • display posts, votes, number of replies
    • display users with number of posts and number of replies
Clone this wiki locally