Code Monkey home page Code Monkey logo

walkthevote's Introduction

Walk The Vote

Election Saver • Pog The Vote

Hand-deliver your ballot today!

Walk the Vote is an effort to ensure people can hand-deliver their ballots to their local county/city/parish election offices. Most, if not all, states allow you to physically deliver your mail-in/absentee ballot to these establishments. The important part is, they allow you to do so early. Beat the stress of waiting in line on Election Day during a pandemic and quit worrying about your ballot getting lost or not counted by the USPS!

Most states are now open for early drop-off ballot voting! We can help you find those, with our easy-to-use database lookup. Enter your 5-digit US Zip, and we will return the address & contact info of the nearest county elections office and clerk.

NOTE: Some jurisdictions also allow you to drop off your ballots at individual polling place drop-off boxes. Our app doesn't quite list those locations, but perhaps this will be a future feature!

Connecting to the Database (Internal Use)

  1. [Install MongoDB locally] (https://docs.mongodb.com/manual/administration/install-community/)
  2. Make sure MongoDB is started as per the installation for your OS
  3. Make sure MongoDB Compass is installed
  4. Message Omar for the URI connection credentials
  5. Copy + paste the DB URI into Compass and view the collections

walkthevote's People

Contributors

abesari avatar acesonnall avatar jproddy avatar lrestrepo0001 avatar pnasciment0 avatar riyaagar96 avatar rohbat avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

walkthevote's Issues

Pre-Flight Check Must Haves

  • Prod DB Live
  • Server Endpoints Working
  • Handle case where we don't support the state
  • Add this verbiage (or something similar) anywhere: "Absentee voting in-person requirements: Registered to vote in your state"
  • Mobile friendly

Create Database Solution

We decided on a solution and it has been implemented. For security reasons, specifics will not be mentioned in this issue.

[DB Handler] Allow Loading of Specific State’s County/City Election Office Info Into DB

Difficulty: Medium - Hard

Right now, for all states that have been imported into the DB handler module, each of their county election office info gets populated into the database. This isn’t horrible as MongoDB, if we tell it to, is smart enough to not write to the database if data already exists for the field we’re trying to insert into, but it still makes an unnecessary amount of I/O calls. If we can modify the get_election_office_info() function to allow for loading of targeted states, that’d make the application faster, decrease unnecessary I/O calls, and overall allow us to make targeted updates to the DB.

[DB Handler] Add Support For More States

Difficulty: Easy - Medium

At the time of writing, the handler only supports two states. Here’s what’s needed to help support more

  • Every scraper file must have an output formatted in accordance to the database schema as seen in our documentation.
  • Every scraper file must have a “get_election_offices()” function that runs the scraper
  • Every scraper must match this path naming scheme
    • scrapers.[LOWER_CASE_STATE_NAME].[LOWER_CASE_STATE_NAME]_scraper
  • Every scraper must run asynchronously. All I/O blocking functions (http requests, file I/O, etc) must be run asynchronously.
  • Import the scraper file to the wtb_db_handler script like so:

Completed

  • Alabama
  • Alaska
  • Arizona
  • Arkansas
  • California
  • Colorado
  • Connecticut
  • Delaware
  • Florida
  • Georgia
  • Hawaii
  • Idaho
  • Illinois
  • Indiana
  • Iowa
  • Kansas
  • Kentucky
  • Louisiana
  • Maine
  • Maryland
  • Massachusetts
  • Michigan
  • Minnesota
  • Mississippi
  • Missouri
  • Montana
  • Nebraska
  • Nevada
  • New Hampshire
  • New Jersey
  • New Mexico
  • New York
  • North Carolina
  • North Dakota
  • Ohio
  • Oklahoma
  • Oregon
  • Pennsylvania
  • Rhode Island
  • South Carolina
  • South Dakota
  • Tennessee
  • Texas
  • Utah
  • Vermont
  • Virginia
  • Washington
  • Washington, DC
  • West Virginia
  • Wisconsin
  • Wyoming

[DB Handler] Convert MongoDB Database Calls to Asynchronous Calls

Difficulty: Hard - Very Hard

To do this you’ll have to refactor all code that makes calls to the database. But there’s potentially a huge speed boost benefit to completing this. Right now we use a combination of PyMongo (main db driver) and PyModm (synchronous ORM for PyMongo). With the way PyModm works, we can make calls asynchronously. The only other ORM for PyMongo that I found that is asynchronous is one called Motor, but its more complex to use the PyModm. umongo is also promising

Server & Domain Hosting Solution

Need a web hosting solutions as well as a server hosting solution, preferably one that would be easy to scale and load balance should the site attract large amount of traffic (i.e. site gets referenced by a news article or shared multiple times via social media).

Feel free to edit this issue to further generalize it/break it down into smaller tasks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.