Giter Club home page Giter Club logo

govote's People

Contributors

blakeguilloud avatar cllunsford avatar colin94l avatar curleypg avatar dependabot[bot] avatar dohkoo avatar dresean avatar jadamsnc avatar jandrewwhit avatar kgoooo avatar licaroline avatar marshallj avatar mmg327 avatar nathansgithub avatar remrobem avatar rtrunkhill avatar sagarmishra avatar schaestewart avatar stevenbuccini avatar tcaddy avatar tleisman avatar tr3yb0 avatar zenlex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

govote's Issues

Add Map to Home page

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

While restructuring the project and implementing react-router, the map was removed from the app.
The map may be removed or relocated later, but for now it needs to be added back to the home page.

Implementation

Look at previous commits that used the map for implementation ideas. If possible/necessary move the state into the map component/MapContainer and keep it out of the home page.

Dockerfile npm install not working

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

Contributors should not have to run npm install in their dev environments on their host machines. This is handled by the GoVote docker image.

Current Behavior

If a contributor does not run npm install the node_modules directory does not get created and no packages are installed.

Possible Solution

Change Dockerfile to fix issue.

Steps to Reproduce (for bugs)

  1. rm -rf node_modules
  2. npm run docker:build && npm run docker:createTables - The createTables command will throw an error
  3. npm install on host machine
  4. npm run docker:build && npm run docker:createTables - The error is no longer thrown

Your Environment

  • Version used:
  • Environment name and version (e.g. Chrome 39, node.js 5.4):
  • Operating System and version (desktop or mobile): macOS
  • Link to your project: [https://github.com/SchaeStewart/GoVote.git]

Move project to Docker

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Moving the project to Docker will help normalize contributors' dev environments so no matter what type of machine the contributor is using there environment will be the same as everyone else. It will also help lock down npm/node version issues and it will allow contributors to run the project without installing postgres.

Implementation

  • Create a single Dockerfile for the GoVote server and frontend that exposes port 3000 so we can access the frontend.
  • Create a docker-compose file that connects the GoVote app and a postgres docker image
  • Create scripts for setting up database tables
  • Update README/Update documentation
    • Provide examples for running the project with docker, creating database tables, and running etl script.

Collect dates for upcoming elections

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Collect dates for upcoming elections in Greensboro/Guilford county. Include Election Day and Early Voting for each election

Early Voting: Thursday, October 18 - Saturday, November 3
Election Day: Tuesday, November 6, 2018

As of 6/26/18, the exact early voting schedule isn't available.

Create City Council election candidate json file.

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Use the City Council Election Candidate spreadsheet here to create a json file that can be queried to show residents' Council Member Information. Json file must meet the following criteria:

We need to be able to query by council district.

Create a json object for City Council that has an array of objects for: Mayor, At Large, and ... an array of objects for Council Districts.

Inside Council District array, create an array of candidates for each district.

Setup CI for project

The GoVote project should include a Continuous Integration pipeline that at the bare minimum will:

  • Invoke our linter on newly opened Pull Requests - as well as display logs telling the contributor what went wrong.
  • Deploy the project when a merge into master branch occurs.

The two CI platforms I am familiar with are Travis and CircleCI, both of which are free. I would probably lean more towards Travis as a starting point, as it is extremely straightforward and easy to understand.

Can I Vote

This is a:

  • bug
  • enhancement
  • feature-discussion

One of the menu options on the landing page leads to this page. Users enter their name, which runs a query of the voter registration database. As shown in the sketch below, this returns links based on one of two cases (voter is registered OR not).

img_0242{:height="50%" width="50%"}

Implementation

Use the VoterInfoForm component to lookup the user's registration status.
If the user is registered, display links to /where-and-when and /candidates
If the user is not registered display a link to https://www.ncsbe.gov/Voter-Information/VR-Form

Errors and Alerts persisting in Voter Lookup Modal

There is an issue in our VoterLookup Modal that causes errors / info alerts to persist after the modal has been closed. This leads to an unwanted UX, as closing the modal should refresh the form.

Steps to reproduce:

  • Click "Voter Lookup" to open the VoterLookup modal.
  • Do not enter any information for First or Last name.
  • Click "Search"
  • Errors will throw in the Modal form.
  • Click "Close"
  • Click the "Voter Lookup" modal again, and the errors will still exist.

After following the above steps:

image

There is an issue that goes in hand with this:

After triggering "No Voter Registration Info Found" feedback by entering a voter name that is not found. I.E. First Name: "Leslie", Last Name: "Knope", and then closing the Modal as mentioned above, the "No Voter Registration Info Found" warning will persist:

image

Acceptance Criteria

  • Upon dismissing the Voter Lookup Modal, all Errors and Feedback should be cleared.
  • All ESLint rules are passing.

Where & When

This is a:

  • bug
  • enhancement
  • feature-discussion

A button reading "Where & When (to vote)" will be one of the menu options at the initial screen of the app. This takes the users into other sections of the app.

Enhancement

Description

The app starts on a front page with a menu and copy as outlined a separate issue. "Where and When" is one of the menu options, which takes the user into the areas associated with information about the logistics of their experience when they go to vote.

This starts with a space where users can enter their name, which queries the voter registration database and returns either their status or a screen on which they can confirm their address. From there, we need to provide information about their polling place, the hours it will be open, early voting options, and link into other sections of the app to look up a sample ballot.

Implementation

  • Polling Place Info - See issue #91
  • Address - Use component from issue #84
  • Map - See issue #92

Refactor Name Lookup and Address Verification into a resuable component

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Each of the pages on the site are going to need the user's name and address in order to find relevant information to them. Encapsulating this functionality into a single component will help prevent duplication of work.

Implementation

Look at the VoterInfoForm and VerifyVoterInfo components and extract the name lookup and address verification functionality into a single component.
Ensure the data returned from the API to the new component, can be passed up to other components.

Implement react router and move away from modals

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

The project has outgrown its current modal design. We need to move to react router to make growth easier and so we can link visitors to specific pages/functionality.

Landing page menu

This is a:

  • bug
  • enhancement
  • feature-discussion

Very basic menu on the landing page that contains our four MVP buttons:
Can I Vote?
Where & When Can I Vote?
Its Election Day, What Do I Do?
Who are the Candidates?

For the time being, these can link to blank pages as placeholders. As team members address issues, they can fill these with the functional code.

Implement working Leaflet Map

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Implement working Leaflet Map centered on Greensboro. Use React-Leaflet.

Create Header React Component

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Create a thin header via a React Component. Adjust the map height to account for the header.

Include the app name 'GoVoteGSO', and the GfGLogo.png in the /src/static directory.

App Crashes on invalid search parameters.

This is a:

  • bug
  • enhancement
  • feature-discussion

Steps to Reproduce (for bugs)

  1. Type a fake address into Address Search Bar and press enter
  2. The app crashes with the error message: "TypeError: Cannot read property 'latlng' of undefined"

Possible Solution

Beef up error handling surrounding the way EsriSearchControl and MapContainer interact when receiving results from the search.

    searchControl.on('results', (data) => {
      this.props.results(data.results[0]);
    });

is returning 'undefined' and is the root of this error.

There are a number of ways to handle this, one of which would be to refactor the way data is passed up from SearchControl and stored in MapContainer state.

Feel free to take this however you would like, and hit me up on slack if you want someone to bounce ideas off of.

Identify a source for geojson data layers.

This is a:

  • bug
  • enhancement
  • feature-discussion

Feature-Discussion

 We need to identify a source for the geojson layers listed below. Ideally we will need to access the data via an API. Locate a source for the GIS data listed below:

  •   School Board
  •   Superior Court Districts
  •   NC House of Rep. Districts 
  •   NC Senate Districts
  •   US Congress Districts
  • Polling Places
  • Voting Precincts
  • Early Voting Places

Update project wiki

should include:
-MVP design and some proposed features
-build instructions
-Resources (PMs, Contributors, Community Stakeholders)
-Community Requirements

Voter registration status should be visible when a user selects their address

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

When a long list of addresses is displayed in Voter Lookup and an address is selected the user's information should immediately be made visible to them.

Current Behavior

When a user searches for their information and verifies their address, if there are a lot of addresses listed the user must scroll down to see their voter registration status.

Possible Solution

  • Hide the addresses once a user has selected one, but leave an easy option to display the addresses again.
  • Automatically scroll to the voter information.

Steps to Reproduce (for bugs)

  1. Look up voter information for John Smith
  2. Select a valid address from the list, that is near the top of the list
  3. Scroll down to see the voter information

Development Workflow - Discussion

I think it would be wise to lockdown our workflow to improve contributor experience, as well as automate our release cycles.

I suggest breaking out the project into two main environments: develop and master. Which would be represented by git branches. This also means defaulting our GitHub branch to be develop, so anyone that opens a pull request will be opening it against develop.

  1. develop

    • It would be great to have a live representation of our develop branch to give us the ability to QA any new features that are being introduced, as well as confirm our production build is behaving as intended.
    • This could eventually be a resource to share with internals, as we could receive UX/UI feedback before shipping the code to a master environment.
  2. master

    • Our master branch should be representative of the public facing url.
    • We should decide how frequent we want to release the latest code base. (Maybe we ship at the start of each CAN?)

Feel free to add any thoughts on this.

Voter registration information

This is a:

  • bug
  • enhancement
  • feature-discussion

We need information about the voter registration process in North Carolina and a "how to" guide for non-registered voters (or those who need to update their voter registration address).

Filter out removed voters addresses' from Voter Lookup

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

Addresses that say "REMOVED" should not be displayed to the users.

Current Behavior

Voters whose info has been removed by the state board of elections is being returned by the API and is displayed to the users.

Possible Solution

  • In server.js filter out results where voter_status_desc is REMOVED.

Steps to Reproduce (for bugs)

  1. Look up voter info for John Smith
  2. There will be several addresses they say "REMOVED"

Add new map overlays and cleanup gis code

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

  • Remove old map overlays/GIS data.
  • Add new map overlays for:
    • Guilford County Commissioner
    • Board of Education Districts (as of January 2016)
    • NC State House Districts (newly redistricted for the 2018 elections)
    • NC State Senate Districts (newly redistricted for the 2018 elections)
    • Guilford County Superior Court Districts
    • US House of Representatives
  • Simplify and refactor process for adding new overlays

Convert Map From HTTP to HTTPS

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

Map should be loaded over https so there are no ssl warnings or errors

Current Behavior

Map is loaded over http

Possible Solution

Change http to https

Remove pg-native from module dependencies

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

Dependencies should install without error.

Current Behavior

If you try installing dependencies without postgressql/libpq installed on the machine the installation fails because pg-native complies from those binaries.

Possible Solution

Remove pg-native from module dependencies.

Steps to Reproduce (for bugs)

  • In an environment that does not have libpq/postgres installed,
  1. Clone the project
  2. npm install / yarn install
  3. You should see some errors about pg_config and libpq

Your Environment

I've tested this on a Windows 10 and Ubuntu Desktop 16.04.

Enhancement

Description

By removing pg-native contributors do not have to install postgres/libpq on their machines, making it easier for new contributors to get up and running.
Additionally, since this project only uses a hosted postgres instance, it is not really necessary to use pg-native.

Create Copy for Home Page

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Create some informational text for the home page that includes information about the project and our mission statement.

Implementation

Here is our current mission statement:

The goal of GoVoteGSO project is to create a web application that the local public can use to easily view their voter registration information and election candidate information.
Use this as a reference for the homepage copy. Try to keep jargon and technical terms out of the final result.

Add a "How to Contribute" section to the README.md

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

This is needed to make this open source project more welcoming to new contributors.

Implementation

It only needs to be a short paragraph or two with links to the code of conduct, and the issue and pull request template for aspiring contributors to refer to.

User prompt for correct voter registration address, and display voter registration status.

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

The voter registration modal prompts the user for first name and last name. After submitting, the node API returns a json object of voter registration data. If the name only matches one Guilford County resident, the json object contains one set of voter info. If the name matches more than one Guilford County resident, the json object returned contains multiple sets of voter info. Regardless of one voter or multiple voter info, we need to have the user verify their address. Use the 'resident_address' key for address validation. Make the user experience user friendly.

Once the user has verified their address, display the resident's voter registration status found in the 'voter_status_desc' key from the json object returned from the API request.

Implement an address search for Guilford County, zoom the map to address, and place a marker.

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Implement an address search text input for the leaflet map restricted to Guilford County. Have the Leaflet map zoom to the entered address and place a marker at the address. Remove the marker when the search is cleared, or another action is performed on the map ie: click for a popup. Talk with @marshallj prior to beginning development to ensure the direction will be merged if a PR is submitted.

Research and design info for the Registration Info Modal

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

The Registration Info Modal appears when a resident's address does not appear in the verify address list. the modal is meant to provide relevant links to information on the North Carolina Elections Board website on how to register to vote, and other relevant info. Research and design the layout of information on the modal to get unregistered or inactive residents the info, or contact info they need to register.

Tests for Frontend

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

The project is starting to grow and tests need to be implemented to ensure maintainability. Especially as the project expands to other brigades/organizations.

Implementation

Jest or other testing framework
Integrate tests with TravisCI

Remove City Council Information

This is a:

  • bug
  • enhancement
  • feature-discussion

The city council information is outdated and the city council election is over. The information pertaining to the city council candidates needs to be removed

Enhancement

Description

Remove city council data because it is outdated and creates confusion.

Implementation

  • Remove the city council references in the VerifyVoterInfo component
  • Remove the city council data from Candidates.json
  • Remove city council map overlay and popup from MapContainer
  • Remove any other unnecessary city council information and any unused functions

Collect Candidates Information

We need to collect information on candidates running in the upcoming elections.

Upcoming Elections

We need candidate info for the following elections:

  • Guilford County Commissioner
  • Board of Education Districts (as of January 2016)
  • NC State House Districts (newly redistricted for the 2018 elections)
  • NC State Senate Districts (newly redistricted for the 2018 elections)
  • Guilford County Superior Court Districts
  • US House of Representatives

Desired Info

  • Name
  • District
  • Website
  • Facebook
  • Twitter
  • LinkedIn
  • Email
  • Phone
  • Incumbent (Yes/No)
  • Active (Are they still actively running?)

Handle Linting errors

This is a:

  • bug
  • enhancement
  • feature-discussion

There are several eslint errors being thrown within the latest App build. Many of them include unnecessary console.log()s or missing semi colons.

BUG

Expected Behavior

Running yarn start and opening your terminal should not return these errors and warnings:

image

In the case that a console.log or console.error (printing an error in the console can sometimes be helpful) is useful to the functionality of the app, use the following comment above the line in question:

// eslint-disable-next-line no-console

Data Validation for the Voter Registration lookup.

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Implement data validation on the first name and last name text inputs in the voter modal. Enforce a value in both text inputs. Take a look at the React-Bootstrap validation tools. Reach out to @marshallj with questions, and to verify direction.

Create an 'About' Bootstrap modal to inform users about Code for Greensboro

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Create an 'About Code for Greensboro' Bootstrap modal that is opened by an 'About' button. Place the button anywhere on the app for now. We can move it once we get to the UI/UX refinements.

See an example of an About Modal from one of our previous projects below:

        <Modal show={this.state.showModal} onHide={() => this.setState({showModal:false})}>
          <Modal.Header closeButton>
            <Modal.Title>About Greensboro Finda Facility</Modal.Title>
          </Modal.Header>
          <Modal.Body>
            <p>Finda is a generic "find-a" app for geographic datasets.</p>
            <p><strong>Please send feedback, ideas, and bug reports to our <a href="https://github.com/codeforgreensboro/finda/issues">Github page</a>.</strong></p>

            <hr />

            <h4>About Code for Greensboro</h4>
            <p>We're developers, designers, data nerds, politically-minded people with ideas for making things better, citizens, users of software—in other words, we are this community. We want to use these talents to make Greensboro's government work with the web in new and better ways.</p>

            <p>Feel free to stop by one of our <a href="https://www.bit.ly/cfgrsvp">Bi-weekly Hack Nights</a>, <a href="https://www.github.com/codeforgso">check us out on Github</a>, or <a href="mailto:[email protected]">simply drop us a line</a>!</p>

            <hr />

            <h4>Credit Where Due</h4>

            <p>Finda was originally built by <a href="https://github.com/codeforboston">Code for Boston</a>. We stand on the shoulders of giants!</p>

          </Modal.Body>
          <Modal.Footer>
            <a href="http://www.gsobuilt.co" target="_blank">
              <img alt="Built in GSO logo" className="pull-left" src={BuiltInLogo} style={{height:'2.5em'}} />
            </a>
            <Button onClick={() => this.setState({showModal:false})}>Close</Button>
          </Modal.Footer>
        </Modal>

Integrate ESLint and Docker

This is a:

  • bug
  • enhancement
  • feature-discussion

BUG

Expected Behavior

ESLint errors and warnings should output to the console/development environment.

Current Behavior

Since the project is currently running inside Docker the errors and warnings only show if you view the container logs.
This bug may be happening because the node_modules folder is being ignored between the host and container.

Implement Webpack Production Build

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Implement Webpack production build with files optimized for performance.

Develop ETL script to update Guilford County voter registration data.

This is a:

  • bug
  • enhancement
  • feature-discussion

Enhancement

Description

Develop an ETL script that can be automated to pull the Guilford County voter registration dataset from the NC Election Board's FTP site, transform it, and load it to our Postgres database on AWS.

The basic steps are here:

-- 1) Copy file from http://dl.ncsbe.gov/data/ncvoter41.zip

-- 2) Convert to utf-8 with iconv at the cli
iconv -f utf-8 -t utf-8 -c '/Users/jason/Documents/Code for Greensboro/GoVoteGSO/ncvoter41.txt' > '/Users/jason/Documents/Code for Greensboro/GoVoteGSO/ncvoter41utf8.txt'

-- 3.) Truncate voter registration table in Postgres

-- 4.) Remove custom column resident_address from table

-- 5.) Load new data into Postgres table

-- 6.) ALTER TABLE to add resident_address column

-- 7.) UPDATE table to populate resident_address column

-- 8.) TEST

Coordinate with @marshallj for more details.

Automate .etl script.

We need to automate our .etl script to run on a cron job that matches the update timer of this data. This can be done via our current EB process, or as a separate process (Lambda function).

I can take charge of this when provided with information surrounding the ncvoter data release cycle.

Mockups

Placeholder issue for mockup discussion / sharing.

Loading state for Form Submission

The Voter Lookup Modal should provide a visual indicator that the form has been submitted and the request is processing. Currently, upon clicking the "Search" button from within VoterInfoForm, there is no indication that the request is processing, thus leading to a poor user experience. We should implement a "Loading" state of some sort to give the user feedback that their request for lookup has been made.

Steps to Reproduce

  • Enter a first and last name after clicking "Voter Lookup"
  • Submit the form

There is a decent amount of time that passes while our API is looking up a proper response, so we need to let our users know.

Acceptance Criteria

  • Upon submitting a form via Voter Lookup, the "Search" button indicates that the form is "in progress".

The way this is implemented is up to the author, but suggestions would be to Disable the state of the button while the form is process or to look into animating a Glyphicon.

Searching a name that returns no results should provide feedback

This is a:

  • bug
  • enhancement
  • feature-discussion

When providing invalid data to the VoterModal, the API returns an empty array when no users are found. This is a cause for confusion, and there needs to be some sort of feedback in the VoterModal letting the user know that "No results were found".

BUG

Expected Behavior

There should be text alerting the user that the request was made successfully (no error was thrown), but the response contained no results.

Current Behavior

The modal does not alter state at all, and without inspected the network request, a user might think that the request is still processing.

Possible Solution

Check the length of this.state.VoterInfo within App.jsx or withinVerifyVoterInfo after the form has been submitted to make sure a valid result is being passed down.

Steps to Reproduce (for bugs)

  1. Search for an invalid first and last name in the VoterModal.
  2. Inspect the Network tab to see that an empty array is being returned and no feedback is being provided to the frontend.

Audit Project Dependencies.

We need an audit on all project dependencies to ensure compatibility across package versions. This includes:

  • Removing unused packages.
  • Locking in package versions.
  • Inspecting package sizes to improve product performance.
  • Separating Dev dependencies from main dependencies.

Help on this is welcome, feel free to DM me on slack if you have any strong opinions or suggestions for this issue.

CSS Preprocessor

We should investigate an appropriate CSS Preprocessor to bring into the GoVote project, and implement it.

From a strict preprocessor standpoint, the two most well supported options are Sass and Less. I am open to either of these.

While non-conventional, the subject of CSS in JS is gaining traction lately, so we could also potentially invest this project into something like Styled Components, which I love!

Acceptance Criteria

Regardless of the library chosen, the implementation should:

  • Integrate with our hot-reloading development environment (i.e. if I make a change to a .scss/.less/.js file, the browser reloads automatically)
  • Move appropriate CSS to respective styling files.
  • Organize our styles into an appropriate directory.

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.