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.