Development Plan - Siripa-Maneein/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
Iteration |
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.
- Python IDE (PyCharm) 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?