Giter VIP home page Giter VIP logo

deep-dive's Introduction

The Polling Stone

A Voting App which gives users candidate information as well as state laws for their location

Polling-Stone

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

Node is really easy to install & now include NPM.

You should be able to run the following command after the installation procedure
below.

    $ node --version
    v0.10.24

    $ npm --version
    1.3.21

Node installation on OS X

You will need to use a Terminal. On OS X, you can find the default terminal in /Applications/Utilities/Terminal.app.

Please install Homebrew if it's not already done with the following command.

    $ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

If everything when fine, you should run

    brew install node

Node installation on Linux

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:chris-lea/node.js
    sudo apt-get update
    sudo apt-get install nodejs

Node installation on Windows

Just go on official Node.js website & grab the installer. Also, be sure to have git available in your PATH, npm might need it.


Installing

A step by step series of examples that tell you how to get a development env running

run the following command to install all necessary dependencies

npm run setup

After setup is complete run the following code to launch the service

npm run launch

End with an example of getting some data out of the system or using it for a little demo

Running the tests

We are utilizing react-scripts for testing through jest-dom you can run the testing script by running the following command

npm run test

This Repo uses Commitizen

Commitizen friendly

This allows consistent commit messages accross the project. To commit with Commitizen use the script npm run commit See more here: https://www.npmjs.com/package/commitizen

Deployment

Add additional notes about how to deploy this on a live system

Built With

  • Ant Design - The design framework used
  • ReactJS - ReactJS library used
  • NodeJS - Used to server routes and database

Authors

a list of contributors can be found Here

Acknowledgments

  • Hat tip to anyone whose code was used
  • Inspiration
  • etc

deep-dive's People

Contributors

scottkelder avatar kyruski avatar mikejdev avatar larobertson avatar seethisthrough avatar dan-kaiser avatar zubaird avatar noahspann avatar ssspear avatar tdsmith27 avatar ant811 avatar remingtonjdavis avatar lkueck avatar

Watchers

James Cloos avatar  avatar

deep-dive's Issues

test

does this work?

Fix launch script and add coverage flags to test scripts

Launch script bug:
"cd ./server && node bin/www & cd ../client && npm run-script start &"

gives error : "line 0: cd: ../client: No such file or directory"

script is trying to cd into non existent folder because it is running cd ./server and cd ../client from the same location at the same time.

fix: change script to cd ./client to get correct reference

acceptance criteria:

  • Launch script launches server and client without throwing an error

babel and webpack config

  1. Create babel and webpack config files
  2. Create package.json scripts to allow quick webpack builds in different environments
  3. Configure Jest to support babel and webpack

Or let CreateReactApp manage all of that don't worry about any of it

Create Header (footer if time)

Why: Our voter will have a consistent experience with every page having a header & footer.

How: Our voter knows that they are using our application because there is a header and footer on every page. They also have a clear understanding of hierarchy on the page.

Acceptance criteria:

  • Each component has a similar style consistent with the rest of the application
  • Header component gives our voter an understanding that they are using our application
  • Footer component contains relevant application information (TBD)

As a voter, I need to find a nearby voting station so I can submit my vote

Why: Our voter has an interest in voting. They either do not know where to get the proper information, or if they do, they find it to be a complicated task. We want to simplify the process for finding nearby options for this person to streamline their process of voting so they can actually show up during early voting / on election day.

How: Our voter can find a nearby voting location by allowing the app to access their current location, or entering their zip code.

For states that offer early voting: Early voting locations can differ from election day voting. This criteria should also be specified during their search.

For states that offer same day registration: Not sure if all voting locations offer same day registration in states that allow it. If they don’t, this should also be specified during their search.

Acceptance Criteria:

  1. Find API that gives us past / current data on physical voting locations
  2. Find API that gives us access to current user location data
  3. Locations will be searchable by zip code or current location
  4. Locations will be categorized by early voting only—if applicable—and election day options
  5. Locations will be categorized by ability to do same day registration—if applicable (not sure how this actually works)
  6. If possible: Locations will include their hours of operation and a rating
  7. Create relevant queries for these criteria

As a voter, I want to get state specific voting information to decide whether or not I am eligible to vote.

Why: The voter wants any additional information they can get to understand the specific state voting laws and the whole process of registration.

How: The voter can input their location by zip-code or search state and will have voting information pulled up on page.

Acceptance Criteria:
Find/grab API keys with individual state voting requirements.
Find API keys that will give locations through zipcode

Big issues: scoping. How much information do we need to provide to the unregistered voter in a false case and where do we get that/how many different APIs will we need to access?

As a user, I want to be able to click on a navigation button and be redirected to the voting detail specific landing page.

Acceptance Criteria:

  • This is the "Voter Info Details" landing page
  • There is side navigation bar for each of the following:
    • Polling station Info
    • State Registration Laws
    • Where to, and how to register, to Vote
    • Am I registered to vote
  • Each of the four bulleted items above also appear as cards on the page.
  • Clicking on the navigation link, or the card, renders that items details on the page. The page does not reload, and the navigation bar stays so that the user can navigate amongst all four items

Initial File Structure Layout

In main directory:
Create a client folder with src and public, inside of src should be a folder containing all components.
Create a server folder.
Create a db folder.

As a voter I need to view candidate information so I can decide who to vote for.

Why: The voter needs a way to see information about potential candidates when they access the candidates selection page such as their: name, party, state, recent tweets, voting record, platform, campaign page link, approval rating, etc.

How: When the user navigates to the candidates page it will display then with a list of clickable candidates which will then navigate to a specific candidates page with all the relevant info from above.

Criteria: Need an api(s) that provide with all this information, set up routes from client to server to database with the relevant queries to the DB in order to retrieve the information.

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.