# truf

RSS/Atom/JSON Feed aggregator. Built with Express 5, React 19, SQLite, and TypeScript.

## Setup

```bash
cp .env.example .env
# edit .env, set SESSION_SECRET
npm install
```

## Run (development)

```bash
npm run dev --workspace=server
# in another terminal
npm run dev --workspace=client
```

Server: http://127.0.0.1:3000, client: http://127.0.0.1:5173.

## Checks

```bash
npm run check        # lint + format + tests
npm run typecheck    # TypeScript type checking (tsc -b)
npm run lint         # ESLint
npm run format:check # Prettier format check
npm run test         # run tests (server + client)
```

## TypeScript

```bash
npm run typecheck    # type-check server & client
npm run build:ts     # alias for typecheck
```

## Deploy

```bash
docker compose up --build
```

App available at http://127.0.0.1:3000.

## Project Structure

```
truf/
├── client/          # React 19 + Vite 6 (TypeScript)
│   └── src/
├── server/          # Express 5 + node:sqlite (TypeScript)
│   └── src/
├── docs/            # DESIGN.md, PROGRESS.md, TypeScript_Migration_Plan.md
├── data/            # SQLite database (dev)
└── package.json     # npm workspaces root
```

Both workspaces are fully migrated to TypeScript with strict mode enabled.
