pipenv Installation
+
+#### pipenv Installation
+
+To build your app, we're going to be building a virtual environment. In order to manage our dependencies and our virtual environment, we're going to use [pipenv](https://pipenv.pypa.io/en/latest/).
+
+1. Check if you have pipenv by running: `pipenv --version`
+1. If you do not have it, install it with homebrew:
+ - `brew install pipenv`
+
+
+
+---
+
+## Get Set Up Locally
+
+### On your Browser
+
+1. Fork this repository to your account
+
+### In your Terminal
+
+1. Clone **your fork** of the repo onto your computer anywhere that is not a git repo
+1. `cd` into the repo
+1. Touch a `.env` into the root of your project and add a SECRET_KEY value. See the .env.sample file for an example
+1. Install all the required packages by running: `pipenv install`
+1. Activate the virtual environment by running: `pipenv shell`
+ - NOTE: To exit the shell gracefully whenever you're done working, use `exit`
+1. Create the `django_contacts` psql database and user by running: `psql -U postgres -f settings.sql`
+ - You can find the database name and username/password inside the settings.sql file
+1. Apply the migrations by running: `python3 manage.py migrate`
+1. Make a superuser for your app, this will allow you to work directly with your database on the browser without having to use Postman
+ - In the pipenv shell, run `python3 manage.py createsuperuser` and follow the instructions
+1. Start the Django server by running the following inside the pipenv shell: `python3 manage.py runserver`
+
+### On your Browser
+
+1. Go to `localhost:8000/api/contacts`. You should see the Django REST Framework interface like so:
+
+1. Click the `Log In` on the top right corner and use the username/password you created when making the superuser
+1. You should now be able to add / delete / edit / read contacts directly from your browser
+
+---
+
+## Making Changes
+
+### Updating / Creating Models
+
+1. If you make any changes to the `contacts_api/models.py` file, you will need to make and run a migration to apply the changes. Do the following commands while _inside the pipenv shell_
+ 1. Make the migration: `python3 manage.py makemigrations`
+ 1. Apply the migration: `python3 manage.py migrate`
+
+---
+
+## Set Up for Heroku Deployment
+
+### In Terminal
+1. Create a heroku app from the root of your project folder, run: `heroku create`
+ - The above command will randomly generate a name for you, if you want to name your app something specific run: `heroku create urlNameYouWantHere`
+
+### In your Code Editor
+
+1. Copy the heroku url that was created (without the `https://`), go to your `django_rest_api/settings.py` and add it into the `ALLOWED_HOSTS`
+ - e.g.
+ 
+
+### On the Browser
+
+1. Go to your heroku dashboard for the heroku project you just created
+1. Click on Configure Add-Ons
+1. Search for Heroku Postgres and add it
+1. Go to the Settings, Reveal Config Vars, add a config var for SECRET_KEY and anything else you have in your .env file
+
+### In Terminal
+
+1. `pipenv lock` to ensure your pipfile.lock is up to date
+1. `git add -A`
+1. `git commit -m "heroku deployment"`
+1. `git push heroku master`
+1. Once it builds successfully, run `heroku run bash`
+1. While in heroku bash, apply the migrations to the heroku project by running: `python manage.py migrate`
+1. Still in heroku bash, create a superuser for the heroku project by running `python
+ - To exit heroku bash, run `exit`
+
+### In Browser
+
+1. After the migrations finish, you should now be able to open the heroku app and use this deployed version as your backend API
+ - Don't forget to go to `/api/contacts`
+1. Remember that your heroku database is separate from your local database, so there should not be any data on the first load.
+ - You can add data by logging in with the heroku superuser you created