Requirements - TAGCH/ku-polls GitHub Wiki
Functional Requirements
- The application should allow users to view a list of active polls.
- Each poll should link to a detailed page displaying the question and available choices.
- Users should be able to vote on a poll and have their vote counted toward the total.
- The application should display the total number of votes for each choice after voting.
- Polls should have a start date, after which they become visible to users.
- Polls should have an optional end date, after which voting is no longer allowed.
- Users should be able to modify their vote during the polling period.
- The application should allow authenticated users to vote and view their previous votes.
- Poll results should be visible to all users after the start date, even if they do not vote.
- The application should save all poll data, including questions, choices, and votes, in a persistent database.
- The admin interface should allow authorized users to add, modify, or delete polls and choices.
- The application should prevent unauthorized users from accessing voting functionalities.
- The system should allow users to view poll results in graphical form.
- The application should redirect users to a list of polls if they attempt to access an unpublished poll.
- The application should automatically test for unit and coverage.
Non-functional Requirements
- The application should be written in Python.
- The application should use the Django web framework.
- The application should be portable and capable of running on Windows, Linux, or MacOS.
- The application should use Git for version control and GitHub for issue tracking and project management.
- The user interface should be responsive and user-friendly, with clear navigation.
- The application should ensure data security by using proper authentication mechanisms.
- The application should be able to handle multiple simultaneous users without performance degradation.
- The system should support future scalability, allowing for additional features in subsequent releases.
- The database should be capable of storing large amounts of data without significant slowdowns.
- The application should have clear installation and operation instructions for end-users.
- The application should provide automated testing and continuous integration support.
- The system should be able to recover gracefully from unexpected failures or restarts.