# BatchForge

BatchForge is a free, browser-based batch image converter. It turns PNG, JPEG,
WebP, AVIF, GIF, BMP, SVG, ICO, HEIC/HEIF, and TIFF files into WebP without
uploading the source images.

Use the hosted app at
[batchforge.myforgeworks.net](https://batchforge.myforgeworks.net),
or run your own copy locally.

## Features

- add individual files, select a whole folder, or drop folders recursively
- convert large batches sequentially to reduce browser lockups
- choose WebP quality and an optional maximum width
- download one WebP directly or a multi-file ZIP
- recover successful outputs when another file in the batch fails
- switch between Light, Dark Gray, and Pure Black themes; Dark Gray is the first-visit default and the choice follows other `myforgeworks.net` sites
- process image data entirely inside the browser

## Design

BatchForge is the visual reference implementation for repeated Forgeworks-family
elements. `app/forgeworks-interface.css` is the versioned executable contract for
the shared font, neutral themes, full-width translucent header, content alignment,
theme control, primary introduction spacing and type, cards, primary actions, one-link utility footer, Guide index, focus behavior, responsive gutters,
and accent-glow geometry. The file and theme-switch component remain identical across
family projects.

BatchForge supplies only its green identity variables and converter-specific working
layout. Its on-page header uses the same text-only wordmark geometry as Forgeworks. The
approved BatchForge logo remains a separate project asset and favicon. The three theme
controls use a static sun, moon, and black dot without ambient animation. See
[`docs/INTERFACE_CONTRACT.md`](docs/INTERFACE_CONTRACT.md) for exact measurements and
the extension rule.

## Guide

The hosted `/guide` route is the public documentation doorway. It indexes use, format
behavior, privacy, limits, source and build instructions, test standing, and licensing.
The site footer links only to that Guide; the Guide then exposes the relevant source and
licence destinations in context.

## Format behavior

TIFF files use the first page. Multi-image HEIC/HEIF and multi-resolution ICO
files use the first decoded image. Animated GIF and WebP files become a static
WebP frame. The maximum practical batch size depends on the browser, image
dimensions, and available memory.

## Run locally

Requires Node.js 22.13 or newer.

```bash
npm ci
npm run dev
```

Open the local URL printed in the terminal.

## Verify a build

```bash
npm test
npm run lint
```

The test command creates a production build and runs the release checks.

## Privacy

Conversion uses browser APIs and local decoder libraries. Image bytes are not
sent to BatchForge or to a third-party conversion service. The hosted app does
not provide an image-upload endpoint.

## License

Copyright (c) 2026 Andraž Đurič. Released under the
[MIT License](LICENSE), which permits personal and commercial reuse,
modification, and redistribution while preserving the copyright and license
notice.
