Development Plan - breezjirasak/ku-polls GitHub Wiki

The application will be implemented in 3 iterations. Each iteration has a duration of 1 week.

Timeline

Iteration Features
1 Display a list of poll questions
  Visitor can select a poll and submit vote for a choice. His vote is added to the total.
  Visitor can see total votes for each choice in a poll
  A Poll has a start date & is visible only on and after this date
  Administrator can add or modify poll questions and choices
2 A Poll has an end date. No voting allowed after the end date.
  Question has methods for is_published and can_vote with unit tests.
  Navigation: user can return to polls list screen from any page or view results w/o voting.
  Navigation: user can go directly to poll results page from the polls index.
  If user enters URL of a poll not yet published then redirect him to polls list page.
  Separate sensitive configuration data from code.
  Automate running of unit tests.
  Add code coverage to measure how well unit tests cover our code.
  Improve formatting of poll detail and poll results page. Layout things in columns.
3 User must authenticate (login) in order to vote.
  Unauthenticated users cannot vote, and poll detail page has a link to login page.
  Each user has only one vote per poll question.
  A user can change his previous vote while a poll is open.
  Provide instructions for installing and running application.
  Provide sample data for polls, and instructions how to import it.

Milestones

teration Milestone
1 Application displays a list of active polls and allows voting on each poll.
  Application shows total "votes" for each choice in a poll. Results are persistent across restart.
2 Ending date of a poll is enforced.
  User can easily return to polls list from any page. Does not need to use browser "Back" button.
  If a URL of unpublished poll is entered, user is redirected to polls list page.
3 Users can login and logout.
  Logged-in users can vote, but allowed only 1 vote per poll. User can change his/her vote on a poll.

Software Process

  • Iterative and Incremental Development with 1 week iterations
  • Iteration plan with goal, milestones, and tasks updated before start of each iteration
  • Project board and Issue Tracker are kept up-to-date and show actual status
  • Github Flow to manage development using branches
  • Unit testing and code review of all code
  • Retrospective at the end of each week. A summary of findings is added to each Iteration Plan.

Technology and Tools

  • Python - programming language for server-side web application.
  • Django web framework used for the application.
  • Python extensions as needed, such as python-decouple to externalize configuration.
  • Github as source code repository, issue tracking, and automatic testing.
  • Github Wiki for project documents.
  • Github Project for backlog, tasks, and work management.
  • Pydev IDE (Eclipse) for coding.
  • Add your own technology & tools. You should update this during the project if you add/change your tools.

Open Issues

  • How to respond to Pull Requests on an individual project?
  • Do we have time to add deployment to a cloud service?