3.1 KiB
easy-image-tools
Browser-based image utility toolkit — no server, no data upload, everything runs locally in your browser.
Inspired by online services like onlinepngtools.com, but fully offline-capable and open source.
Features
- A full set of image tools across categories: conversion,
transparency/alpha, color, channel decomposition, geometry, filters,
pixel-property masks, generation, text/watermarks, analysis & verdicts — the
current list lives in
docs/tools-map.md - Web Worker execution — heavy operations run off the main thread with automatic fallback to direct calls
- i18n — full Russian and English localization
- Dark/Light themes — persisted to localStorage
- Pure TypeScript core —
lib/core/operates onImageData/Uint8ClampedArraywith no DOM dependency - Fully static — no backend; the image never leaves your browser. The only
third-party request is a Google Analytics page-view counter — it never sees
the file or its contents; the boundary and its limits are in
docs/plan-seo.md§0
Tech Stack
- SvelteKit (Svelte 5, runes mode) with static adapter — pure static export, no server
- Vite + TypeScript (strict)
- Vitest for unit tests, Playwright for e2e
- ESLint (incl. local plugins) + Stylelint + Prettier
- pnpm (required, ^11.20.0)
- Lucide icons, IBM Plex fonts (self-hosted)
Getting Started
Prerequisites
- pnpm v11.20+
Install & Run
pnpm install
pnpm dev
Build
pnpm build
Static output is written to web/build/.
Commands
Run from the repository root; pnpm --dir web … targets the app package.
pnpm install
pnpm dev # dev server
pnpm verify # full fast quality gate — the pre-review gate
pnpm build # static production export → web/build/
For the full command list and the "which checks to run for which change" matrix,
see AGENTS.md and
docs/quality-gates.md.
Architecture
Everything is built around the two-layer registry (web/src/lib/registry/):
a tool is a self-contained implementation {id, schema, input, result, run}
(registry/tools/), and a page is {slug, title, description, category, steps}
(registry/pages/) that names the address and the tools to run — one tool can
back several pages. Pages and forms are generated from it, and all execution
goes through a single executor.execute entry point.
Core image processing lives in web/src/lib/core/ and operates directly on
ImageData, with no browser API dependencies.
Layering, data flow, and the recipe for adding a tool or a field kind:
docs/architecture.md.
Roadmap
See docs/roadmap.md for phases and
docs/plan-platform.md for the API/PWA direction. The
current focus is SEO/GEO (docs/plan-seo.md) plus the
product tasks in docs/backlog.md.
For AI agents
Read AGENTS.md first — it is the mandatory short contract.