# Build and Deploy Steps

## A. Running Locally without Docker <a href="#clone-repository" id="clone-repository"></a>

### Clone repository <a href="#clone-repository" id="clone-repository"></a>

{% code overflow="wrap" %}

```bash
# Fork and Clone the Repository
git clone https://github.com/PSMRI/ubi-beneficiary-backend.git
cd ubi-beneficiary-backend

# Check out the main branch
git checkout main
```

{% endcode %}

### Install  Dependencies

```bash
# Install dependencies
npm install
```

### Optional - Set up Git hooks

```bash
# Set up Git hooks (Husky)
npm run prepare
git config core.hooksPath .husky/_
chmod +x .husky/pre-commit
chmod +x .husky/commit-msg
```

### Create / Update .env

Ensure you have created and updated `.env` with required variables

### Running in Dev Mode

```bash
npm run start:dev
```

The backend will be available at: 👉 <http://localhost:3000>

### Running in Production Mode

```bash
npm run build
npm run start:prod
```

## B. Running with Docker <a href="#clone-repository" id="clone-repository"></a>

### Create / Update .env

Ensure you have created and updated `.env` with required variables

### Build Docker Image Run Steps

Using [Dockerfile](https://github.com/PSMRI/ubi-beneficiary-backend/blob/main/Dockerfile) from the repo code, you can generate an image

```bash
# Build the Docker Image
docker build -t beneficiary-backend .
```

### Example .env for docker

The `docker-compose.yml` requires a separate file `.env`&#x20;

```env
# Database
DATABASE_NAME=uba_beneficiary_mw
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=postgres

# pgAdmin
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=admin123

# Keycloak
KC_DB=postgres
KC_DB_URL=jdbc:postgresql://postgres:5432/uba_beneficiary_mw
KC_DB_USERNAME=postgres
KC_DB_PASSWORD=postgres
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=admin123

# Hasura
HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:postgres@postgres:5432/uba_beneficiary_mw
HASURA_GRAPHQL_ADMIN_SECRET=hasura_secret
```

### Use Image in docker-compose

Use generated images in [docker-compose.yml](https://github.com/PSMRI/ubi-beneficiary-backend/blob/main/docker-compose.yml)

```bash
# Run the Container
docker-compose up -d
```

### More about docker-compose

The [docker-compose.yml](https://github.com/PSMRI/ubi-beneficiary-backend/blob/main/docker-compose.yml) located in the **root of the repository** provisions the following services:

* **Postgres** (port `5432`)
* **pgAdmin** (port `8082`)
* **Keycloak** (port `8080`)
* **Hasura GraphQL Engine** (port `8081`)

#### Verify Services

* Database: `localhost:5432`
* pgAdmin: <http://localhost:8082>
* Keycloak: <http://localhost:8080>
* Hasura Console: <http://localhost:8081>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://piramal-swasthya.gitbook.io/uba/toasters/beneficiary-toaster/developer-guide/backend-guide/build-and-deploy-steps.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
