hackforla / ballotnav Goto Github PK
View Code? Open in Web Editor NEWA repository for HackforLA's BallotNav project
Home Page: https://BallotNav.org
License: GNU General Public License v2.0
A repository for HackforLA's BallotNav project
Home Page: https://BallotNav.org
License: GNU General Public License v2.0
Data structure for postgres so we can get started.
Please note this can be changed in the future, but the faster we get this initial one the faster we can get started.
Copy for the website
Requirements gathering milestone complete
Finding volunteers from CFA events
We need to have the application display all the locations that are within the users Election Administration Jurisdiction (EAJ) on the initial map load.
Search #42
(how do we know when this task is "Done")
There are numerous ways that locations are scheduled by their respective jurisdictions. We need to come up with a good way to handle this in the UI. Perhaps we need a calendar view for the location?
These are different formats that I've seen:
24/7 (continuously) starting at a date/time, ending at a date/time
Between a range of dates, the same open/close times every day, with no exceptions (i.e., "Every day, Oct 27 to Nov 3, 8-7")
Open/close times vary consistent by range of days (i.e., "Mon-Fri 8-4; Sat 8-12")
Open/close times vary by date without consistency beyond 1 week
An example of that last one is all of Ohio:
October 6-9: 8:00 a.m. - 5:00 p.m.
October 12-16: 8:00 a.m. - 5:00 p.m.
October 19-23: 8:00 a.m. - 6:00 p.m.
October 24: 8:00 a.m. - 4:00 p.m.
October 25: 1:00 p.m. - 5:00 p.m.
October 26-30: 8:00 a.m. - 7:00 p.m.
October 31: 8:00 a.m. - 4:00 p.m.
November 1: 1:00 p.m. - 5:00 p.m.
November 2: 8:00 a.m. - 2:00 p.m.
November 3: 6:30 a.m. - 7:30 p.m.
In all cases, the currently open/closed indicator is possible and IMO we should keep it.
As an idea, perhaps we could keep the current wireframe design that could accommodate the 24/7 locations (because that's super short to explain: "24/7, opens October 5", "24/7, until November 3 at 7:30 PM").
But for all of the others, perhaps we could do something along the lines of one of these descriptions ("Opens Monday at 8:00 AM", "Closes at 5:00 PM"), along with a link that opens a calendar view of the schedule for that location?
I know data, but I'm not great at UI; please go easy on me if this is illogical. I'll be happy to clarify or provide additional information if needed.
We need a requirements summary to share with website design and to complete the initial requirements gathering milestone.
Requirements gathering milestone complete
Individual drop off locations should have a QR code
Talk to @JacobZwang about design if you are interested
Find out how other websites approach delivering similar information to see what we can implement with our own
We need to recruit contributors for this project on an ongoing basis in order to make sure that the site goes live in a timely manner.
Add OKR Guide to this issue
We need to collaborate on identifying how best we will measure the successes using milestones and measurable results.
Ballot NAV OKRs
Useful OKR reading - https://www.whatmatters.com/articles/okrs-positive-social-change-nonprofit/
Useful OKR reading - https://www.bernardmarr.com/default.asp?contentID=1456
100 Automation Example OKRs
we need to fix a few minor problems in AirTable so that the forms work properly on Saturday 9/12/2020 National Day of Civic Hacking
Link to contributing doc to check flow
Users that we created for testing purposes
Create social media accounts for BallotNav.
Set up accounts for:
BallotNav social media profile pictures
email address is [email protected] and @Arjayellis has the password
Identify how we will measure and report customer facing use
Research and discuss options
As a voter worried about election interference, I want to be informed if my state has a ballot-tracking tool so I can visit and use it.
If there is a website which has documentation that helps with this issue provide the link(s) here:
How to track your ballot like a UPS package
Users should have the capability to signup for notifications from BallotNav, notifying users about an update on their state's Secretary of State page so that they are not relying on old information or having to continually check our site.
Feature: search by address #42
Privacy Policy #104
TBD based on compliance requirements
We need to review the information we intend to collect so that we can present ballot information in a way that is valuable to our audience
Competitor/Resource research #14
Basic backend flask setup with docker and docker compose done.
Should be able to get dropoffs by county
/dropoffs
state
and county
, and sends only the points with the proper state and county.We should be able to grab all points in an area and send them to the client.
Write a one-sheet for the BallotNav project
Create CI for pushes to master branch.
We need to be able to take data from airtable or raw csv and import it into a database.
This should be able to be run regularly with minimal manual intervention, even automated!
Write a python or SQL script that reads each line of the csv and executes on the db.
Python's psycopg2
library is very good for this.
# psuedo code warning
connection = psycopg2.connection("postgres://ballotnav:[email protected]:5432/main")
with open("import-data-from-airtable.csv") as f:
reader = csv.DictReader(r)
with connection.cursor() as cursor:
for line in reader:
cursor.execut("insert into dropoff_table values {**line}")
This should be straightforward for a singel table, but gets trickier as the data relationships expand.
write JSON API calls to the application
e.g.
for line in csv_file:
response = requests.post("https://ballotnav.org/api/locations", {"data": line})
if response not in requests.ok:
print("we got an error on this line: ", line)
else:
print("created this : ", line)
This way seems more maintainable & automatable but has the dependency on us writing the app!
Relevant excerpts from the chat
20:22:37 From Hovanes Gasparian : What was the Rock the Vote site about? Didnโt they have location-based tools?
20:22:43 From Ryan Swan : 538 has a similar tool: https://projects.fivethirtyeight.com/how-to-vote-2020/
20:23:24 From Mya Stark : doesnโt seem to have drop-off info either
20:23:24 From Mya Stark : https://projects.fivethirtyeight.com/how-to-vote-2020/
20:27:12 From Hovanes Gasparian : https://www.rockthevote.org/how-to-vote/
20:30:16 From Hovanes Gasparian : Yeah, the bulk of the work would probably be JavaScript in terms of visuals and whatnot
20:32:28 From Hovanes Gasparian : or if it was like a web app, and you access it from your smartphone, and grab your location data?
20:32:54 From Mya Stark : i feel like web app would be best
20:32:59 From John Ritchey : gotta take off for another call. Looking forward to where this is going.
20:36:17 From Mya Stark : Number of Drop Boxes for March 2020 Election - 155
20:36:23 From Mya Stark : 155 for the whole county??
20:42:08 From Hovanes Gasparian : https://caearlyvoting.sos.ca.gov
20:42:25 From Hovanes Gasparian : Looks like the SOS is kicking it down to the counties
20:42:36 From Sophia Alice : Nice How!
20:43:38 From Hovanes Gasparian : But yeah, if we had someone in Padillaโs office, that would be great, haha
20:45:47 From Hovanes Gasparian : Yeah, CA is pretty good about it. Iโd say the need is much greater for a tool like this in Southern states and wherever the cough voter suppression cough efforts are greater...
20:47:16 From Bonnie Wolfe : @Hov agreed, but looks like southern states may be restrict people to mailing them in only.
20:47:18 From Mya Stark : How good is Code for America brigade coverage in those areas?
20:47:47 From Bonnie Wolfe : @mya We have pretty good coverage all over
20:48:01 From Alina Ingel : May be also try to contact the LA County Election office? Dean Logan, Registrar - Recorder/County Clerk, [email protected] - would not hurt, but who knows how responsive they are
20:48:27 From Mya Stark : โAlmost all states allow voters to deliver their ballots in person at their local election office."
20:48:37 From Bonnie Wolfe : Where are you seeing that
20:49:11 From Mya Stark : https://www.cbsnews.com/news/absentee-ballot-alternatives-usps-mail-in-voting-presidential-election/
20:49:28 From Mya Stark : their source is https://www.ncsl.org/research/elections-and-campaigns/absentee-and-early-voting.aspx#permit
20:50:12 From Bonnie Wolfe : ok, so we could map local election offices?
20:51:25 From Bonnie Wolfe : I clicked on California but still didnโt find the offices
20:51:31 From Mya Stark : I feel like that would be a minimum safe bet
20:51:51 From Bonnie Wolfe : Opps, didnโt look hard enough
20:51:55 From Bonnie Wolfe : https://www.sos.ca.gov/elections/voting-resources/county-elections-offices/
20:51:55 From Mya Stark : hereโs a table of what states do drop BOXES but i donโt believe a state has to have boxes for drop-off to be viable
20:51:56 From Mya Stark : https://www.ncsl.org/research/elections-and-campaigns/vopp-table-9-ballot-drop-box-definitions-design-features-location-and-number.aspx
20:52:25 From Mya Stark : Yeah drop boxes seem pretty niche
20:52:38 From Bonnie Wolfe : But its not like I needed a map, since there is only one LA location
20:52:44 From Mya Stark : local election offices might be a quick and dirty safety net
20:53:37 From Mya Stark : โTwo states permit ballots to be dropped off at a polling place, but it must be the voterโs assigned precinct polling place on Election Day: New Hampshire and Vermont.โ
20:54:19 From Bonnie Wolfe : so this is Alabama: The absentee ballot application must be returned to the Absentee Election Manager by the voter in person (or by the voter's designee in the case of medical emergency voting), by U.S. Mail, or by commercial carrier.
20:54:30 From Bonnie Wolfe : https://www.sos.alabama.gov/city-county-lookup/absentee-election-manager
20:59:04 From Mya Stark : this is WHO can return a ballot but it doesnโt say who TO https://www.ncsl.org/research/elections-and-campaigns/vopp-table-10-who-can-collect-and-return-an-absentee-ballot-other-than-the-voter.aspx
21:03:09 From Mya Stark : In some ways the goal is to combat โEven if, as the Postal Service says, it has plenty of capacity to process mail-in ballots, the fear is that the psychological damage is already done.โ
21:03:15 From Mya Stark : https://archive.vn/YNMCQ#selection-685.0-685.149
21:03:25 From Mya Stark : the psychological damage
21:05:41 From Mya Stark : โIn Ohio, Frank LaRose, the Republican secretary of state, said he did not have the legal authority to unilaterally expand drop-box locations. He has since decreed that there can be no more than one drop-off location per county."
21:05:48 From Bonnie Wolfe : @mya what if the idea was to provide a place where people could get pro-vote advice?
21:09:44 From Mya Stark : From humans?
21:09:50 From Bonnie Wolfe : yes
21:09:57 From Mya Stark : I donโt really believe in those
21:10:01 From Bonnie Wolfe : lol
a user needs to be able to enter an address and receive information about their closest ballot dropoff location.
(how do we know when this task is "Done")
Users can search at following locations
Users can search the followings ways
Error Handling requirements
This has an issue Invalid Address Feature #112
Search (using interface code from FoodOasis for the search)
foodoasis.la search example
Figma
EAJ = Election Administration Jurisdiction
Set up a free airtable account and follow up with the airtable team about a free user subscription for COVID 19 related projects.
We need to create a form to gather information from brigades' interest in helping us with the manual updating process so that when the interface is ready there are people to use it.
We want to add specific information for each type of volunteer so they know how to contribute
We need to have users be able to search by criteria and get back results based on location so that we accurately deliver them their EAJ info
Search (using interface code from FoodOasis for the search)
We need to create basic functionality for the BallotNav site, so that it is minimally useful to users.
Can load new data into our application
This card should take a post request to /dropoffs
with a json body with required fields and add it to the postgres table
We need to create a flexible structure for the website to accommodate requirements
Requirements gathering summary Issue #12
Recruit volunteers who are willing to make calls to find the most up to date information regarding ballot drop off (most likely at county level for all 50 states)
We need to get new volunteers' information on the roster so we can add new resources and stay in touch.
Email address has been added to the google drive
We need an up to date ReadMe to communicate effectively new users, contributors, and visitors on a continuous basis.
We will create a roadmap to stay on track and ensure members are aware of necessary milestones
We need to provide the location schema for the designers to make sure they have all the info that is going to need to be on the location page.
Update Readme so that people thinking about joining our project know how to contribute.
Adding Project Card to hfa website: hackforla/website#703
Other readme's
Hack for LA's default
civic opportunity
hackforla.org website
our readme
BallotNav readme
We will collect assets to put onto website in this issue
Develop style guide for the overall navigation and visual appearance of the site.
Figma File
Stylesheet for BallotNav Logo
We need to display the last time when the site was updated
Timestamp
REPLACE THIS TEXT -If there is a website which has documentation that helps with this issue provide the link(s) here.
We need an exception table of places that don't use the county as their election administration jurisdictions (EAJ) so that the lines in the map match the area.
https://en.wikipedia.org/wiki/County_(United_States)#County_equivalents
We need a notification examples so that design can plan them in.
Get VRMS to add this project to its database so that meeting times can appear on the website team meeting page
https://www.hackforla.org/project-meetings
slack channel for VRMS team is vrms.
We need to be able to direct people to BallotNav.org so that they can find the information they need easily.
https://github.com/hackforla/ballotnav/blob/master/README.md
We currently do not have any latitude or longitude data for any ballot dropoff location address, but the client requires these to render locations on the map.
the input data will likely change a lot--new columns may be added, old ones removed so consider how much your program relies upon the current structure of the input and make it robust to change.
separate the input transformation from the output/saving code; it's likely that we will want to change the output from writing to a file to sending HTTP requests to the ballotnav backend. Consider making this part of the program swappable
We need to know who we are designing this website for
We need to give users a display of up to 5 closest drop-off locations, with pagination for additional results.
Search #42
(how do we know when this task is "Done")
We need to build a team for the BallotNav site.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.