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
 * System sets a poll as closed at midnight on the poll close date
 * System will not accept votes after a poll has closed. System does not inform to voter of this.
 * System disables all unused voting form keys when the poll closes.
 * All front end business logic will be replicated in the business logic code
 * All data to be stored in a secure database
 * No direct access allowed to data except via secure channels
 * 1) Secure channels include secure voting pages and secure admin pages

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