Snake Eyes Voting System Requirements

= Admin =


 * Web page to create and control of a poll
 * Security Locked to Poll Admin only
 * Create poll
 * Set poll start date
 * Set poll end date
 * Add and modify poll motions
 * Add and modify poll voting


 * Web pages to control poll participants
 * Security Locked to Poll Admin only
 * Add new participant
 * Bulk upload of participant
 * Possibly a web form which will accept a CSV list
 * Display existing participants
 * Delete existing participants
 * Full audit trail for participant information changes to be kept
 * Possibly as a history table.
 * Need to note date, time, userid, and a copy of current data before it is changed when a row is deleted or updated in the participant table.
 * Possibly using a trigger on the participant table.
 * Audit view of participants - full history of participant information
 * Possibly as a join of participants and participants history tables sorted by participant name showing audit information including who changed the data and when
 * At a minimum a straight dump-and-display is needed. Being able to filter the display would be useful.

= Architecture and Features =

Required

 * System needs to have a Test environment and a 'Production environment
 * 1) Allows for functional testing of Snake Eyes Voting System components
 * 2) Allows for running polls in Production without possibility of polluting with Test data
 * 3) Preferably in such a way that functional testing can be done completely separate from the production environment
 * 4) Preferably in such a way that multiple people can access the established environments
 * Poll Control
 * 1) A poll must have a set closing date set when the poll is opened
 * 2) System sets a poll as closed at midnight on the poll close date
 * 3) System will not accept votes after a poll has closed. System does not inform to voter of this.
 * 4) System disables all unused voting form keys when the poll closes.
 * User Interface
 * 1) All front end business logic will be replicated in the business logic code
 * 2) Secure input method for voting page
 * 3) Secure admin pages
 * 4) Secure access to anonymous form of voting data for scrutineers
 * Data Storage
 * 1) All poll data to be stored in a secure database
 * 2) No direct access allowed to data except via secure channels
 * Data Validation
 * 1) Validation of voter email addresses (check that email addresses are real and exist)
 * 2) Verification of voter email addresses (ping users to confirm email address is real)
 * Poll Administrator access
 * 1) Add Poll Manager
 * 2) End Poll Manager
 * 3) Noting that the Poll Manager role data is not deleted. Mark as ended. Keep data for life of system.
 * Delete Poll Data
 * 1) Data to be kept for x years before it can be deleted.
 * 2) Only a Poll Manager can delete poll data
 * Poll Statistics
 * 1) Number of voters invited to vote
 * 2) Number of votes received
 * 3) Poll open date
 * 4) Poll close date
 * 5) Poll motions

Optional

 * System to detect voters who have have not voted and two days before the poll closes the system sends a reminder to those tardy voters

= Voter Features =

Required

 * System will send an email to each voter containing a URL specific for the voter for a specific poll
 * Voter interface will be a web page that is accessible in a modern browser
 * Front end shall assist the user as much as possible where multiple options are allowed and where specific types of input are required

Optional

 * JavaScript in the front end to assist the voter in using the voting form
 * Tooltips and the like in HTML to provide information and help for the voter