Skip to content

Repository files navigation

PicForge

MIT License React Vite Local first

Language: English | 简体中文 | 繁體中文 | 日本語 | 한국어

Demo: picforge.de

PicForge is a local-first browser app for batch image compression and resizing. It uses Canvas, Web Workers, and WebAssembly codecs to process images on your device. There are no accounts, uploads, or server-side image processing.

PicForge workspace preview

Highlights

Feature Details
Local processing Decode, resize, encode, preview, and export run in the browser.
Batch workflow Add images by click, drag-and-drop, folder drop, or paste.
Compression formats MozJPEG, WebP, OxiPNG, and AVIF via @jsquash/*.
Worker pipeline Browser-side decode/resize with WASM encoding in a managed WorkerPool.
Per-image overrides Global settings can be overridden by a complete snapshot on any image.
Preview modes Slider, side-by-side, and single-image comparison with zoom and pan.
Export tracking Single download or ZIP export with picforge-manifest.json.
PWA ready Installable app shell with offline cache and foreground update prompt.
Internationalized English, Simplified Chinese, Traditional Chinese, Japanese, and Korean.

Quick Start

Requirements:

  • Node.js 18 or newer
  • pnpm 8 or newer
git clone https://github.com/DejavuMoe/PicForge.git
cd PicForge
pnpm install
pnpm dev

Open http://127.0.0.1:5173.

Production build:

pnpm build
pnpm preview

Architecture

User files
  -> fileStore queue
  -> effective settings: global or per-image snapshot
  -> decode and optional resize with browser Canvas APIs
  -> WorkerPool encodes pixels with @jsquash WASM codecs
  -> preview URLs, size stats, manifest metadata, and export actions

The UI is a native React app shell with dense workspace controls: header, toolbar, file list, preview, single-image settings, and status bar. Preview overlays are separated from the image transform layer so labels and metadata do not scale during zoom.

Commands

Command Action
pnpm dev Start the app dev server on 127.0.0.1.
pnpm build Build the production app.
pnpm preview Preview the production build.
pnpm lint Run ESLint.
pnpm test Run Vitest.
pnpm typecheck Type-check app, worker, and codecs packages.

Documentation

Document Purpose
Architecture Runtime architecture and data flow.
QA checklist Manual regression and release checks.
i18n guide Translation and language support notes.
Changelog Version history.
Contributing Development and pull request guidance.
Security Vulnerability reporting and privacy model.

Privacy

PicForge reads selected files locally and uses generated object URLs for preview and export. Object URLs are revoked when files or results are removed. If you deploy the app yourself, keep analytics, upload flows, and remote processing out of the default path unless users explicitly opt in.

License

MIT © DejavuMoe

About

a local-first browser app for batch image compression and resizing. It uses Canvas, Web Workers, and WebAssembly codecs to process images on your device. There are no accounts, uploads, or server-side image processing.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages