Homebrew is an easy way to manage software downloads on MacOS. You don't *have* to use it, but we recommend it.
1. First, open your terminal and run `brew -v` to determine whether you have Homebrew installed. If you get a resopnse that looks something like `Homebrew 3.1.9`, you've already got it! If you get nothing back, or an error, continue.
2. Open the terminal and copy / paste this command and hit RETURN. Go through the prompts (you will need to grant `sudo` access).
This will work for both MacOS and Win10. Follow instructions on this [link](https://medium.com/@nodesource/installing-node-js-tutorial-using-nvm-5c6ff5925dd8). Be sure to read through the whole doc to find the sections within each step relevant to you (e.g. if you're using Homebrew, when you get to Step 2 look for the section, "Install NVM with Homebrew").
If you install NVM using Homebrew, make sure to read the output in terminal after you run `brew install nvm`. You will need to add a few lines to your ~/.bash_profile and perhaps complete a couple other tasks.
While any IDE can be used, we're outlining how to set up VS Code
1. Open the terminal and type `brew install --cask visual-studio-code` and hit RETURN.
1. If this doesn't work or for Win10, you can download VS Code from the [website](https://code.visualstudio.com/).
2. After [forking this repo](https://github.com/usds/justice40-tool/blob/main/CONTRIBUTING.md#code-contributions), you can clone your forked repo into VS Code
3. VS Code with prompt you to "clone a repo"
4. Open the terminal and navigate to `client` directory
Once you have the required software installed and ready on your computer, you're ready to begin installing and running the Justice40 Tool code.
1. Fork this repository and create a clone locally. In your terminal/CLI, in the directory you wish to put this project, run `git clone` plus the URL of your fork.
1. If you're using a Mac and Homebrew, go ahead and run `brew update` and `brew doctor`. It's always good to run these regularly to make sure your packages are up to date and in good condition.
Now, check out the next section on the organization of this repository to determine where to go next.
### Repo organization
Our repo is organized into multiple directories (folders) to make it easier to work on and run different parts of the system independently.
The top level of the repo contains these directories, as well as project-wide documentation such as this INSTALLATION file, the README, LICENSE, CODE OF CONDUCT, etc.
There is also a docker-compose file that will eventually include everything you need to run every part of the application in one docker command; however, at the moment, this file only spins up the score creation part of our data pipeline.
**Running the client**
If you wish to check out our client-side code (i.e. the GatsbyJS statically generated website with the map), check out the `client` directory and its [README](client/README.md).
If you want to run the data pipeline with ETL and score generation, check out the `data/data-pipeline` directory and its [README](data/data-pipeline/README.md).
For core team contributors working on deployment, check out the `infrastructure` directory and its [README](infrastructure/README.md) for information on deploying the backend to AWS.