# backend

This backend is a [node.js](https://nodejs.org/) [express.js](https://expressjs.com/) [apollo server](https://www.apollographql.com/docs/apollo-server/) project in a [yarn workspace](https://yarnpkg.com/features/workspaces).

## Getting Started

### Install dependencies

In the root of the project, run:

```zsh
yarn
```

### Build backend

```zsh
yarn build --ignore frontend
```

### Environment variables

#### Local

Copy the `environments/local.toml.example` file to `environments/local.toml`:

```zsh
cp environments/local.toml.example environments/local.toml
```

#### Staging environment variables

In the deployment repository, update staging [staging/configmaps/config/prod.toml](https://git.vdb.to/cerc-io/snowballtools-base-api-deployments/src/commit/318c2bc09f334dca79c3501838512749f9431bf1/deployments/staging/configmaps/config/prod.toml)

#### Production environment variables

In the deployment repository, update production [production/configmaps/config/prod.toml](https://git.vdb.to/cerc-io/snowballtools-base-api-deployments/src/commit/318c2bc09f334dca79c3501838512749f9431bf1/deployments/production/configmaps/config/prod.toml)

### Run development server

```zsh
yarn start
```

## Deployment

Clone the [deployer repository](https://git.vdb.to/cerc-io/snowballtools-base-api-deployments):

```zsh
git clone git@git.vdb.to:cerc-io/snowballtools-base-api-deployments.git
```

### Staging

```zsh
echo trigger >> .gitea/workflows/triggers/staging-deploy
git commit -a -m "Deploy v0.0.8"  # replace with version number
git push
```

### Production

```zsh
echo trigger >> .gitea/workflows/triggers/production-deploy
git commit -a -m "Deploy v0.0.8" # replace with version number
git push
```

### Deployment status

Dumb for now

- [Staging](https://snowballtools-base-api.staging.apps.snowballtools.com/staging/version)
- [Production](https://snowballtools-base-api.apps.snowballtools.com/staging/version)

Update version number manually in [routes/staging.ts](/packages/backend/src/routes/staging.ts)
