# xftp-web

Browser-compatible XFTP file transfer client in TypeScript.

## Prerequisites

- Haskell toolchain with `cabal` (to build `xftp-server`)
- Node.js 20+
- Chromium system dependencies (see below)

## Setup

```bash
# Build the XFTP server binary (from repo root)
cabal build xftp-server

# Install JS dependencies
cd xftp-web
npm install

# Install Chromium for Playwright (browser tests)
npx playwright install chromium
```

If Chromium fails to launch due to missing system libraries, install them with:

```bash
# Requires root
npx playwright install-deps chromium
```

## Running tests

```bash
# Browser round-trip test (vitest + Playwright headless Chromium)
npm run test
```

The browser test automatically starts an `xftp-server` instance on port 7000 via `globalSetup`, using certs from `tests/fixtures/`.

## Build

```bash
npm run build
```

Output goes to `dist/`.
