A project to automate expunging qualifying criminal records. This project is done in conjunction with the Multnomah County Public Defender's Office. Learn more in the wiki.
This README is primarily for the backend. For info on the frontend see src/frontend/README.md.
-
Install Python:
-
Mac
To install the latest version of Python on Mac run:
$ brew install python3
note: This will pull the latest version of Python, so when Python 3.8 or greater is released it will install that version.
-
Linux
-
Ubuntu 18.04
To install Python 3.7 on Ubuntu 18.04 run the command:
$ sudo apt-get install python3.7 -y
-
Ubuntu 16.04
To install Python 3.7 on Ubuntu 16.04 follow the instructions here.
-
-
Windows
To install Python 3.7 on Windows, follow the instructions in this guide..
-
-
Install Pipenv
Install the pipenv package manager which also automatically creates and manages virtual environments.
-
Install additional libraries needed for running the backend natively or with pipenv:
-
Mac
brew install postgresql
It may be necessary to then run
export LDFLAGS="-L/usr/local/opt/openssl/lib”
More information on a Mac isntallation here: https://wiki.postgresql.org/wiki/Homebrew
-
Linux
sudo apt-get install libpq-dev -y
-
Windows
TBD
-
-
Install NPM if you don't already have it installed. This link provides instructions on how to install Node.js and NPM
-
Install backend dependencies:
A Makefile controls installing dependencies, running the Flask app, and removing build artifacts. While in the directory of your local
recordexpungePDX
repo, install the backend dependencies by running:$ make install
Make will read
Pipfile
and install listed Python packages into aPipenv
virtualenv. -
Install frontend dependencies
While in the directory of your local
recordexpungePDX
repo, enter into your command line and run:
$ cd src/frontend
$ npm install
While in the directory of your local repo, run:
$ make run
Doing so runs the Flask
app inside a Pipenv
virtualenv (the Flask
app will
also install dependencies as part of this process). On success, a
development server for the backend should be started on http://localhost:5000
.
To check this, navigate to http://localhost:5000/hello
. If everything worked
correctly, your browser should display the text Hello, world!
.
While in the directory of your local repo, run:
$ make clean
in order to remove build artifacts.
Currently using pytest for testing.
Run all tests with the following command:
$ make test
.flaskenv
: Environment variables read by flask
command-line interface via python-dotenv
Makefile
: GNU Makefile controlling installing dependencies and running the application
Pipfile
: Pipenv
file listing project dependencies
config
: Project configuration files
doc
: Developer-generated documentation
settings.py
: python-dotenv
configuration file
src
: Source dir
src/backend/expungeservice/app.py
: Flask application
`
- Fork the repo on GitHub
- Clone the project to your own machine. Replacing YOUR-USERNAME with your github username.
$ git clone https://github.com/YOUR-USERNAME/recordexpungPDX.git
- cd into recordexpungPDX
$ cd recordexpungPDX
- Configure upstream to sync with your fork
$ git remote add upstream https://github.com/codeforpdx/recordexpungPDX.git
- Create a branch to work on. Replacing BRANCH_NAME with a descriptive name of the work planned such as
update_contributing_doc
$ git checkout -b BRANCH_NAME
- Commit changes to your branch (never to master)
- Push your work back up to your fork
$ git push
- NOTE: The first time you do
git push
on your branch it will error with:
fatal: The current branch BRANCH_NAME has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin BRANCH_NAME
- Copy the output and run it. Then afterwords simply push more commits by running
git push
.
- Submit a Pull request
- NOTE: For future contributions be sure to sync master with upstream
$ git checkout master
$ git pull upstream master
$ git checkout -b BRANCH_NAME
TODO: Add license