Development Plan - GToidZ/ku-polls GitHub Wiki

The application development takes 3 weeks. Implementation of application splits into an iteration per week, resulting in 3 iterations.

Timeline

Iteration Features
1 Display a list of polls in homepage.
Users can select and interact with a poll choice. Casting a vote counts the score to the poll.
Users can see total vote count on each poll.
Users can see vote count for each choices on a poll.
A poll has a publication date and will be visible on or after publication date.
Administrator can create, edit and delete polls.
Navigation: user can return to polls list screen from any page or view results w/o voting.
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 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.
  Improve formatting of poll detail and poll results page.
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.
  Automate running of unit tests.
  Add code coverage to measure how well unit tests cover our code.

Weekly Timeframe (if possible)

Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7
Implementation x x x x
Bug Fixing x x
Code Styling x
Retrospective x

Software Process

  • Iterative and Incremental Development with 1-week long iterations.
  • Using Project Board to show and update statuses for tasks.
  • Github Flow to manage development with branches and PRs.
  • Unit testing and code review after implementation.
  • Retrospective at the end of the week.

Tech & Tools

  • Python, as the main programming language.
  • Django, web framework based on Python.
  • Git, a source version control tool.
  • GitHub for hosting the source repository and issue tracking.
  • GitHub Actions for CI/CD.
  • GitHub Wiki for hosting documentation.
  • GitHub Projects for backlog and task management.
  • Visual Studio Code as the main text editor.
  • Neovim as a fallback text editor.