Git Product home page Git Product logo

convictionvacation's Introduction

As of 12/31/2020, this project as detailed in the README has been sunsetted, and a new product is currently underway. We still welcome volunteers to join us and you can find more information about this project, and Open Seattle here.

Conviction Vacation

Build Status Deployment Status License: MIT

Automating conviction vacation in King County.

Table of Contents

About The Project

One in four Washingtonians have been involved in the criminal justice system. Those with a criminal record face significant barriers to daily life after completing their prison terms, making it harder to find housing and employment, to gain professional credentials, and to be involved in the life of their community.

Washington State’s New Hope Act makes it easier for people with past criminal records to have their convictions vacated. Yet the system is slow and inefficient. We have identified opportunities to use technology to streamline this process, and want to explore which of these technological possibilities would make the most sense to prototype, given user needs and volunteer resources.

Our Mission

To benefit individuals with criminal convictions and decrease lifelong “collateral consequences.” We have identified the first product we hope to ship to the KCBA to help automate the process for record clearance (a pain point and manual process for lawyers): a conviction eligibility calculator.

We look forward to collaborating with you.

Development Setup

Currently the entire system is a single page application that runs on GitHub Pages and uses React. In this future this may change as we add more features and develop the system further but this works well for now.

Installation

In the project directory, you can run:

  1. Ensure you have nodejs installed on your machine using whatever system package manager, on Mac using homebrew run:

    brew install nodejs
    
  2. Install project dependecies

    npm install
    
  3. Start the app in development mode

    npm start
    
  4. Visit http://localhost:3000 to view it in the browser

Development Environment with Docker

A developer workflow using Docker can be done by building the image locally or pulling from Docker Hub.

This image should be for development only and should not be used in production.

  1. Ensure you have docker installed on your machine. Refer to the Docker install instructions for more information.

  2. Pull the image from Docker Hub

    docker pull openseattle/convictionvacation:0.0.1
    
  3. Test that this image works on your machine - run the image and expose port 3000

    docker run -p 3000:3000 openseattle/convictionvacation:0.0.1
    

    Note: Environment variables can be added with a -e flag for advanced configurations

  4. Visit http://localhost:3000 to view it in the browser

  5. Once you've verified this image will work, shut down the container by hitting Ctl-C in the active terminal window or viewing all running containers with docker ps -a then docker stop <container_name>

  6. To enable hot reloading, regenerate node_modules and run the image with your local repo mounted into the container.

    cd /path/to/convictionvacation
    docker run -v `pwd`:/root -p 3000:3000 openseattle/convictionvacation:0.0.1 npm install # this command will likely take a minute 
    docker run -v `pwd`:/root -p 3000:3000 openseattle/convictionvacation:0.0.1
    

    Note: Windows users will need to escape the path (See this comment. The commands may take a few minutes.

    docker run -v //$(pwd):/root -p 3000:3000 openseattle/convictionvacation:0.0.1 npm install
    docker run -v //$(pwd):/root -p 3000:3000 openseattle/convictionvacation:0.0.1
    

Further React Documentation

Other Commands

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

Running commands inside a Docker container

Confirm the Docker container is running docker ps -a.

The output should show the container status:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                    NAMES
d38d26e6cd69        test:latest         "docker-entrypoint.s…"   12 seconds ago      Up 11 seconds                0.0.0.0:3000->3000/tcp   blissful_meitner

Under NAMES generated by docker, find the running container and open a shell:

docker exec -it blissful_meitner /bin/sh

Contributing

  1. Fork the repo.
  2. Create your feature branch git checkout -b feature/your-feature-name
  3. Commit your changes git commit -m "commit message describing your changes"
  4. Push your changes to your feature branch git push origin feature/your-feature-name
  5. Open a Pull Request

Get In Contact

Find more information about this project, and Open Seattle here.

License

Distributed under the MIT License. See LICENSE for more information.

convictionvacation's People

Contributors

efawe avatar guesswhosamfoo avatar keyan avatar shankj3 avatar sscchan avatar stuttskl avatar tohuynh avatar zachlamb avatar

Stargazers

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

Watchers

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

convictionvacation's Issues

Add in Google Analytics to website

We need a way to see user behavior in websites

We want to conduct measurement of the impact associated with this software. One of the tasks is to instrument the webpage to add standard and custom metrics.

Signup for Google Analytics (and associated Google Accounts)
Setup Google Analytics code
Design appropriate metrics
Implement metrics

Enable multi-page legal form filling POC

The form filling proof-of-concept is currently limited to a form that is single page. We need to enable form-filling for multiple-page forms. These forms must look correct when printed on US letter paper size.

Research & Document Methodology for Identifying Form Filling Location in Images

As part of the project's approach on form filling by overlaying text on form images, we need to identify the location (in x, y pixel coordinates) where individual field will need to be filled in the form. We need to create detail step-by-step instructions to allow other volunteers to do this.

Tasks are as follows:

  1. Identify and document (in README.MD) procedures for Mac on how to identify the (x,y) pixel offset using Preview (dragging selection rectangle).
  2. Identify and document (in README.MD) procedures for PC on how to identify the (x,y) pixel offset using paint.
  3. Identify and document (in README.MD) procedures for Linux on how to identify the (x,y) pixel offset using the default drawing app.

Research, document and execute procedures to determine supported browser version.

We need to understand and document how to determine the lowest browser setting
Related to #41 .

  1. Identify how one can emulate specific versions of browser for testing.
  2. Document procedures to emulate and check browser for compatibility.
  3. Identify which Browser (IE, Firefox, Chrome, Safari, etc) we are supporting.
  4. Identify which version the software supports.

Beta Branch auto deployment

We want to have a “live” Beta page that will allow us to test the software as-deployed in the cloud instead of in local laptops. This will allow users to interact and test with the Beta version whilst keeping the main.

Setup Beta branch
Setup Beta branch related GitHub Actions
Write documentation on code promotion procedures

Need instruction for setting up Docker image based development environment.

This project has volunteers that uses a number of different OSs.

With certain OSes (e.g. Windows, old LTR of CentOS, etc) will encounter severe friction when new volunteers are attempting to set up the development environment.

We should investigate and document steps (especially for Windows) on how to use dockerized development environment to expedite setting up of development environments.

We need to make sure our instructions covers how a user can run test (e.g. npm test) within the docker container and access the local server that serves the static pages.

We should aim to make dev environment setup as pain free as possible for hackathon scenarios.

We have a docker hub organization account that can be used: https://hub.docker.com/orgs/openseattle

Create .nvmrc

Use an .nvmrc file as the source of truth for node version used in this project

Add support for marijuana misdemeanors

As of July 2019, RCW 9.96.060 Section 5 was amended so that all marijuana misdemeanors can be vacated, see: https://apps.leg.wa.gov/RCW/default.aspx?cite=9.96.060

Every person convicted of a misdemeanor marijuana offense, who was twenty-one years of age or older at the time of the offense, may apply to the sentencing court for a vacation of the applicant's record of conviction for the offense.

These also have a separate form.

This means the current logic and crime classification needs to be updated. Marijuana misdemeanors are a special case and need to be handled as such in the logic. This entails:

  1. Adding a new crime classification
  2. Modifying the eligibility logic to handle this case

I'm going to take a first pass at a fix this week.

Fix website auto-deployment

For some reason gh-pages is failing to deploy properly when using the GitHub actions workflow but correctly deploys using npm run deploy.

I think this is being caused by the git history being purged each time it runs as simply running npm run deploy adds a commit instead of removing the entire history. For now, website deployments will be manual after a series of commits / PRs.

Enable mulit-form proof-of-concept

The form-filling module's proof-of-concept is limited to a single legal form, we'll need to expand it such that it can auto-fill multiple forms.

Calculator output for relevant date before 5 years is mislabeled

Currently for "(yearsSinceLastConvictionDate >= 5)" in Elgibilitytimelinecalc

("The latest conviction date (" + lastConvictionDateString + ") is within the last 10 years.");

Should be ("The latest conviction date (" + lastConvictionDateString + ") is within the last 5 years.");

Form filling proof-of-concept refactor to React components

The current auto-form-filling proof of concept uses raw html / css / js to achieve its objective. However, the rest of the application uses React components. We would like to refactor the form filling feature to use react component to facilitate future integration with the main app.

Make calculator results mobile friendly

Description:
When testing the master branch I tried the entire process with a squashed window and the results form has the same behavior as before #13 where the table doesn't retain useful context as to which text belongs to which columns.

image

Expected Behavior:
The results form should have the same behavior as the entry form where when the table is squashed, the column names follow the text.

System and Software:

  • Browser: multiple
  • Exact URL: no route switch

Additional context
n/a

Testing infrastructure is needed

We need to write tests, and testing infrastructure is required to do so. We need to decide on the testing framework and add it to the codebase.

Create / update tool to generate legal form definition file for auto-formfilling.

As part of the project approach to form-filling via overlaying text on images of forms, we'll need to generate "definition" files for each page of each from in order to record information necessary to enable population of form fields in the correct coordinates.

We currently have a crude Proof-of-Concept (POC) Google Sheet implementation in
https://docs.google.com/spreadsheets/d/1DC43NRW4N-8RUXqnfn3K72SKu4vo7yhtrppgAgAXYAA/edit#gid=0

Tasks:

  1. Investigate and confirm current Proof-of-Concept approach to form definition.
  2. Update existing Proof-of-Concept to comply with confirmed definition schema.
  3. Create instructions (in README.md) in the use of the definition generation tool.

Design and communicate Build Versions

We need to communicate the build version to our users in the frontend in order to help with debugging.

We'll need to make sure maintainers can identify version numbers against deployments

Test cases required

We need specific examples of test "clients" with convictions input and corresponding (verified) vacation outputs.

Preliminary design of integration with form-filling Proof-of-Concept

The project currently has a proof of concept automated form-filling module. However this module is not integrated with the main application.

We need to preemptively design the proper interface with the main module for integration in the very near future. We'll need to be able to auto fill forms of different combinations of conviction types in "one-shot".

Part of the design includes the consideration of:

  • How do we model the fields in a form-page?
  • How do we model multiple pages in a form?
  • How do we translate upstream input values into these form elements?

Multi-objective Genetic Algorithm Optimization of Water Supply Systems

hello Stephen Chan, In the project "Multi-objective Genetic Algorithm Optimization of Water Supply Systems " the files:

EPANETInputLocation = "c:\EPATEST\robmanualnetwork.inp";
pipeDatabaseInputLocation = "c:\EPATEST\robtestpipedatabase.txt";

Could you provide us with the structure of those files? Thank you for your great contribution.

Extract images from related Legal Forms

Our approach to automatic form-filling is to use text overlay on images of forms. We need to extract (from word, pdf, etc) the legal form into images with specific Pixel Per Inch (PPI).

The task is as follows:

  1. Adopt a consistent naming convention for form images.
  2. Extract form images at the requisite 200 Pixel Per Inch.
  3. Name the forms according to the naming convention.

The forms are as follows:

Forms to generate -

[Extra for felonies]

[For Marijuana cases]

Originally posted by @vritant24 in #22 (comment)

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.