Capstone

Below is the Capstone Challenge, presented as a set of requests from a client. A few notes:
  • This request is more vague in its technical details than previous requests. It’s closer to how a client would present his or her needs to you.
  • Please approach this project “naturally”: if you need more information from the client, ask for it. If you want to use existing themes, plugins, etc., go for it. Whatever you think gets you to a happy client on this project.
  • I’m the client for this example, but I’m also (separately) a developer who can help you think through this. So if you’re wondering what the best approach should be, contact me and let’s find a time to think through the project together.
The prompt is below.
I want a website that hosts written debates between students. I want to first try it with a debate team I run, and then see if my school district can use it or if it could eventually be a paid service that I sell across the US.
 
I’d like students to be able to sign up through a free registration form to be “Debaters.” Anyone can sign up, but we do have to approve their registration before they can start debating.
 
There should be as many debate topics as I choose write. I’ll start with five or ten topics. Any debater can sign up for any topic, but a debater can only be signed up for a maximum of two open topics at once because I don’t want students overcommitting themselves.
 
I should be able to choose any debate topic and start the debate by clicking a button. When the debate starts, all the people who are signed up for that debate get split into pairs. (If it’s an odd number, pair the odd person with me, the site owner, for now.) 
 
Also, each topic has two sides (such as “Yes” or “No,” “Pro” or “Con,” and so on). I’d like students to be able to indicate their preference for a side on any given debate. But then if there are eight “Yes” students signed up and two “No” students signed up for a topic, I want it to balance out so that three of the “Yes” students actually have to argue the “No” side, and they simply get told that they’re on the “No” side, and it’s five yes/no pairs.
 
The way the debate works, for each pair of students, is that each student first submits a short opening essay on the debate topic, and then the students respond, back and forth, to each other’s essays and responses, as often as they want. I’d like that to look something like a bulletin board or a forum – written responses stacked vertically, one after another.
 
The debates should last around 48 hours, but I want to close them manually rather than having them automatically time out. So I should have a “Close” button that closes any given debate. When I do, people who visit the website should then be able to browse all paired debates on that topic: the original essays, plus any back-and-forth the students submitted. I’d like this to be from a central screen, like: “Topic: [Topic name]” and then, down the screen, pairs of debaters: “Student A vs. Student B,” “Student C vs. Student D,” and so on. Clicking into any pair shows their debate on that topic.
 
Lastly, I’d like to be able to choose a “Winner” of each paired debate. This means that I want to be able to choose which student won the debate, and I want to give about one paragraph of comments on why. The winner, and my comments, should be viewable within the students’ finalized debate itself. And I’d like to keep a student leaderboard: a win is 3 points, and a loss is 1 point, to encourage participation. So if a student is in three debates, wins two and loses one, he or she has 8 points. I’d like a page that shows a ranking of all students who have more than 0 points (that is, they’ve participated in something).