# Development environment

[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/babybuddy/babybuddy)

Click the Gitpod badge to open a new development environment in Gitpod or use the
information and steps below to set up a local development environment for Baby Buddy.

## Requirements

- Python 3.6+, pip, pipenv
- NVM (NodeJS 14.x and NPM 7.x)
- Gulp
- Possibly `libpq-dev`
  - This is necessary if `psycopg2` can't find an appropriate prebuilt binary.

## Installation

1. Install pipenv per [Installing pipenv](https://pipenv.pypa.io/en/latest/install/#installing-pipenv)

1. Install required Python packages, including dev packages

       pipenv install --three --dev

   - If this fails, install `libpq-dev` (e.g. `sudo apt install libpq-dev`) and try again.
    
1. Installed Node 14.x (if necessary)

        nvm install 14

1. Activate Node 14.x

        nvm use

1. Install Gulp CLI

       npm install -g gulp-cli

1. Install required Node packages

       npm install

1. Set, at least, the `DJANGO_SETTINGS_MODULE` environment variable

       export DJANGO_SETTINGS_MODULE=babybuddy.settings.development

    This process will differ based on the host OS. The above example is for
    Linux-based systems. See [Configuration](../setup/configuration.md) for other
    settings and methods for defining them.

1. Migrate the database

       gulp migrate
        
1. Create cache table

       gulp createcachetable

1. Build assets and run the server

       gulp

    This command will also watch for file system changes to rebuild assets and
    restart the server as needed.

Open [http://127.0.0.1:8000](http://127.0.0.1:8000) and log in with the default
username and password (`admin`/`admin`).