A server for an absentee ballot request form, with a corresponding client. Somebody who wants an absentee ballot can complete a web form, and Horatio will use those values to complete the state-sanctioned PDF and email it to the appropriate registrar. The creation of Horatio was funded by Aneesh Chopra’s Innovate Virginia Fund PAC. It is named for Horatio Seymour, the former governor of New York, who was an ardent opponent of President Abraham Lincoln’s creation of an absentee balloting system to allow deployed Union soldiers to vote in the 1864 election.
Absentee ballot request forms may be submitted electronically in Virginia under the authority of attorney general opinion #13-111 and approval of the State Board of Elections. (p. 7, lines 189–215).
Fundamentally, this is a system to:
Which is to say that it's not very complicated.
First, somebody completes the HTML form produced by the Horatio client:
The contents of the form are converted to JSON and submitted to the Horatio server:
Horatio maps the JSON values to PDF form fields:
And, finally, it emails that PDF to the appropriate registrar.
api/
directory onto a web server. This may be at the root of a domain name, or within a subdirectory.curl -sS https://getcomposer.org/installer | php
).php composer.phar install
./bounce/?key=
and a 32-character random string, e.g. http://example.com/bounce/?key=qTugfIdCvB9SjymJW5yqQUofQu9iU119
. Keep a copy of this 32-character string until the next step, where it’s the value of BOUNCE_API_KEY
.includes/settings.inc.php
.applications/
has write permissions for the web server, but not read permissions (i.e., drwx-wx-wx
), because that is where the completed absentee ballot requests will be stored.Horatio was created by Waldo Jaquith and funded by the Innovate Virginia Fund PAC.