# Contributing

## Development Setup

1. Clone:

```bash
git clone https://github.com/rivet-dev/openhandoff.git
cd openhandoff
```

2. Install dependencies:

```bash
pnpm install
```

3. Build all packages:

```bash
pnpm -w build
```

## Package Layout

- `packages/shared`: contracts/schemas
- `packages/backend`: RivetKit actors + DB + providers + integrations
- `packages/cli`: `hf` and `hf tui` (OpenTUI)

## Local RivetKit Dependency

Build local RivetKit before backend changes that depend on Rivet internals:

```bash
cd ../rivet
pnpm build -F rivetkit

cd /path/to/openhandoff
just sync-rivetkit
```

## Validation

Run before opening a PR:

```bash
pnpm -w typecheck
pnpm -w build
pnpm -w test
```

## Dev Backend (Docker Compose)

Start the dev backend (hot reload via `bun --watch`) and Vite frontend via Docker Compose:

```bash
just factory-dev
```

Stop it:

```bash
just factory-dev-down
```
