2026-09-03 16:29:05 +05:00
2026-08-28 14:27:44 +05:00
2026-09-04 17:07:38 +05:00
2026-09-02 17:54:31 +05:00
2026-09-01 15:20:28 +05:00
2026-08-30 22:40:25 +05:00
2026-09-01 15:20:28 +05:00

easy-png-tools

Browser-based PNG utility toolkit — no server, no data upload, everything runs locally.

Inspired by online services like onlinepngtools.com, but fully offline-capable and open source.

Features

  • Pixel-level image processing — format conversion, transparency/alpha channel, color transformations, geometry, filters/convolutions, morphology, quantization & palettes, image generation, text/watermarks, analysis & checks
  • Pipeline system (workspace) — load image → chain multiple tool steps → sequential application → download result; pipelines saved to localStorage, exportable as JSON
  • Web Worker execution — heavy operations run off the main thread with automatic fallback to direct calls
  • i18n — full Russian and English localization with search matching
  • Dark/Light themes — persisted to localStorage
  • Pure TypeScript corelib/core/ operates on ImageData/Uint8ClampedArray with no DOM dependency
  • ~30+ tools across categories: transparency, color, geometry, filters, morphology, palettes, generation, text, analysis

Tech Stack

  • SvelteKit (Svelte 5, runes mode) with static adapter — pure static export, no server
  • Vite + TypeScript (strict)
  • Vitest for unit tests
  • ESLint + Prettier
  • pnpm (required, ^11.20.0)
  • Lucide icons, IBM Plex fonts (self-hosted)

Getting Started

Prerequisites

Install & Run

pnpm install
pnpm dev

Build

pnpm build

Static output is written to web/build/.

Other Commands

Command Description
pnpm --dir web test Run unit tests (Vitest)
pnpm --dir web check Type-check (svelte-check)
pnpm --dir web lint Lint (ESLint)
pnpm --dir web format Format (Prettier)
pnpm --dir web preview Preview production build

Project Structure

easy-png-tools/
├── web/                    # Main SvelteKit application
│   ├── src/
│   │   ├── lib/
│   │   │   ├── core/       # Pure TS image processing (ImageData-based)
│   │   │   ├── components/ # UI components
│   │   │   ├── tools/      # Pipeline, executor, overlay store
│   │   │   ├── i18n/       # Localization (ru/en)
│   │   │   └── registry.ts # Tool registry (source of truth)
│   │   └── routes/         # SvelteKit routes
│   └── build/              # Static export output
├── docs/                   # Architecture docs, roadmap, plans
└── refs/                   # Design reference (Next.js, not part of runtime)

Architecture

The project is built around a tool registry (registry.ts) — each tool is a self-contained entry with {id, title, description, category, params, run}. Pages, forms, and pipelines are generated from this registry.

Core image processing lives in lib/core/ and operates directly on ImageData objects with no browser API dependencies, making it portable to other environments (WASM, CLI) in the future.

Roadmap

See docs/roadmap.md for the full development plan. Current phases:

  1. Phase 1 — TypeScript core + web UI (in progress)
  2. Phase 2 — Rust/WASM core for performance-critical operations
  3. Phase 3 — CLI tool

License

MIT

S
Description
No description provided
Readme MIT
2.6 MiB
Languages
TypeScript 71.9%
Svelte 18.9%
JavaScript 8.1%
CSS 1%