diff --git a/README.md b/README.md index cced1c3..73442c8 100644 --- a/README.md +++ b/README.md @@ -12,27 +12,27 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). -115 tools in 12 categories. Each tool's **README** covers its code, limits and tests; the user guide (how to use, limits, privacy, FAQs) is on its page on the site. +116 tools in 12 categories. Each tool's **README** covers its code, limits and tests; the user guide (how to use, limits, privacy, FAQs) is on its page on the site. ### Images (13) | Tool | What it does | Docs | |---|---|---| | [**Clean Image**](https://zykit.vercel.app/tools/clean-image) | See the EXIF, GPS, XMP, IPTC, C2PA and AI-generation data inside JPEG, PNG and WebP files, then strip it without re-encoding. | [README](src/tools/clean-image/README.md) | -| [**Image Compressor**](https://zykit.vercel.app/tools/image-compressor) | Compress photos with a quality slider and optional max size, compare before and after, and download one file or a ZIP of the whole batch. Nothing is uploaded. | [README](src/tools/image-compressor/README.md) | -| [**Image Resizer**](https://zykit.vercel.app/tools/image-resizer) | Resize one image or a batch with the aspect ratio locked, by percentage, or to fit, fill or cover a size. Presets for 1080p, 4K, Instagram, Twitter headers and favicons. | [README](src/tools/image-resizer/README.md) | -| [**Image Converter**](https://zykit.vercel.app/tools/image-converter) | Convert images between PNG, JPEG, WebP and AVIF, with a background colour for transparent areas and a quality setting. Reads any format your browser can open. Batch and ZIP download. | [README](src/tools/image-converter/README.md) | -| [**Image to Base64**](https://zykit.vercel.app/tools/image-base64) | Turn an image into a Base64 data URI, CSS background or HTML img tag, or paste Base64 to preview and download the image. The file type is detected from its bytes. | [README](src/tools/image-base64/README.md) | -| [**SVG Optimizer**](https://zykit.vercel.app/tools/svg-optimizer) | Strip editor metadata, comments and default attributes, round path numbers and remove scripts and event handlers from SVGs. Preview safely and compare sizes. | [README](src/tools/svg-optimizer/README.md) | -| [**Favicon Generator**](https://zykit.vercel.app/tools/favicon-generator) | Generate a multi-size favicon.ico, PNG favicons, an Apple touch icon, Android icons, a web manifest and the HTML link tags from an image, text or emoji. Download everything as a ZIP. | [README](src/tools/favicon-generator/README.md) | +| [**Image Compressor**](https://zykit.vercel.app/tools/image-compressor) | Compress photos with a quality slider and optional max size, compare before and after, and download one file or a ZIP. Nothing is uploaded. | [README](src/tools/image-compressor/README.md) | +| [**Image Resizer**](https://zykit.vercel.app/tools/image-resizer) | Resize one image or a batch by pixels, percentage or to fit a box, with presets for 1080p, 4K, Instagram, Twitter headers and favicons. | [README](src/tools/image-resizer/README.md) | +| [**Image Converter**](https://zykit.vercel.app/tools/image-converter) | Convert images to PNG, JPEG, WebP or AVIF from any format your browser can open, with quality and background settings. Batch and ZIP download. | [README](src/tools/image-converter/README.md) | +| [**Image to Base64**](https://zykit.vercel.app/tools/image-base64) | Turn an image into a Base64 data URI, CSS background or HTML img tag, or paste Base64 to preview and download the image. | [README](src/tools/image-base64/README.md) | +| [**SVG Optimizer**](https://zykit.vercel.app/tools/svg-optimizer) | Optimize SVGs: strip editor metadata, comments and default attributes, round numbers, and remove scripts and event handlers. Preview safely and compare sizes. | [README](src/tools/svg-optimizer/README.md) | +| [**Favicon Generator**](https://zykit.vercel.app/tools/favicon-generator) | Make favicon.ico, PNG favicons, Apple touch and Android icons, a web manifest and HTML link tags from an image, text or emoji, as one ZIP. | [README](src/tools/favicon-generator/README.md) | | [**Image Editor**](https://zykit.vercel.app/tools/image-editor) | Crop, rotate, flip, resize, sharpen and adjust brightness, contrast, saturation and colour, then export as PNG, JPEG or WebP. | [README](src/tools/image-editor/README.md) | -| [**Color Palette Extractor**](https://zykit.vercel.app/tools/color-palette-extractor) | Extract 3 to 12 dominant colours from an image with k-means in OKLab or median cut, see each colour’s share and WCAG contrast, and copy them as CSS variables, SCSS, a Tailwind theme or JSON. | [README](src/tools/color-palette-extractor/README.md) | -| [**Image Diff**](https://zykit.vercel.app/tools/image-diff) | Compare two images side by side, with a slider, onion skin, blink or a difference heatmap. Set a tolerance, ignore anti-aliasing, see the changed pixel count and download the diff as PNG. Nothing is uploaded. | [README](src/tools/image-diff/README.md) | +| [**Color Palette Extractor**](https://zykit.vercel.app/tools/color-palette-extractor) | Extract 3 to 12 dominant colours from an image, see each one’s share and WCAG contrast, and export them as CSS variables, SCSS, Tailwind or JSON. | [README](src/tools/color-palette-extractor/README.md) | +| [**Image Diff**](https://zykit.vercel.app/tools/image-diff) | Compare two images side by side, with a slider, onion skin, blink or difference heatmap. Set a tolerance, count changed pixels and download the diff PNG. | [README](src/tools/image-diff/README.md) | | [**Placeholder Image Generator**](https://zykit.vercel.app/tools/placeholder-image) | Create placeholder images with custom size, colours and text, and download them as PNG, JPEG, WebP or SVG. | [README](src/tools/placeholder-image/README.md) | | [**QR Code Reader**](https://zykit.vercel.app/tools/qr-code-reader) | Decode QR codes from an image, screenshot or paste and see the content, with links and Wi-Fi details shown safely. | [README](src/tools/qr-code-reader/README.md) | | [**Signature Pad**](https://zykit.vercel.app/tools/signature-pad) | Draw or type your signature and download it as a transparent PNG or SVG to place on documents. | [README](src/tools/signature-pad/README.md) | -### Data (18) +### Data (19) | Tool | What it does | Docs | |---|---|---| @@ -48,12 +48,13 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**JSON Schema Validator**](https://zykit.vercel.app/tools/json-schema) | Validate JSON documents against JSON Schema (draft 2020-12 and 7) with clear error paths, or infer a schema from sample data. | [README](src/tools/json-schema/README.md) | | [**Mock Data Generator**](https://zykit.vercel.app/tools/mock-data-generator) | Generate fake users, emails, addresses, companies and more as JSON, CSV or SQL for testing and prototypes. | [README](src/tools/mock-data-generator/README.md) | | [**Query CSV with SQL**](https://zykit.vercel.app/tools/csv-sql) | Load CSV files into an in-browser SQLite database and query, join and aggregate them with SQL. Nothing is uploaded. | [README](src/tools/csv-sql/README.md) | -| [**JSON to Code**](https://zykit.vercel.app/tools/json-to-code) | Paste JSON and get typed models: Go structs with json tags, Python dataclasses or Pydantic, Rust serde structs, Java records or POJOs with Jackson, C# with System.Text.Json and Kotlin with kotlinx.serialization. | [README](src/tools/json-to-code/README.md) | +| [**JSON to Code**](https://zykit.vercel.app/tools/json-to-code) | Turn JSON into typed models: Go structs, Python dataclasses or Pydantic, Rust serde structs, Java records or POJOs, C# classes and Kotlin data classes. | [README](src/tools/json-to-code/README.md) | | [**Log Viewer**](https://zykit.vercel.app/tools/log-viewer) | Open NDJSON or plain log files to filter by level, field and text, sort by time and inspect each entry, without uploading. | [README](src/tools/log-viewer/README.md) | | [**TOML ↔ JSON**](https://zykit.vercel.app/tools/toml-json) | Convert TOML config files to JSON and JSON back to TOML, with precise error locations and dates handled correctly. | [README](src/tools/toml-json/README.md) | | [**JSON Tree Viewer**](https://zykit.vercel.app/tools/json-tree-viewer) | Browse big JSON files as an expandable tree with search, path copy, type badges and array counts, without uploading them. | [README](src/tools/json-tree-viewer/README.md) | | [**XML Formatter**](https://zykit.vercel.app/tools/xml-formatter) | Pretty-print or minify XML, find syntax errors by line and column, and test XPath expressions in your browser. | [README](src/tools/xml-formatter/README.md) | | [**Excel to CSV / JSON**](https://zykit.vercel.app/tools/excel-to-csv) | Open an Excel workbook, preview each sheet and export it as CSV, TSV or JSON, without uploading the file. | [README](src/tools/excel-to-csv/README.md) | +| [**PostgreSQL Query Builder**](https://zykit.vercel.app/tools/postgres-query-builder) | Draw tables and relationships, build SELECT queries with joins, filters and grouping without writing SQL, and generate PostgreSQL CREATE TABLE statements. | [README](src/tools/postgres-query-builder/README.md) | ### Code (11) @@ -68,8 +69,8 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**CSS Generator**](https://zykit.vercel.app/tools/css-generator) | Visually build CSS gradients, box and text shadows, border radius, clamp() fluid sizes and cubic-bezier easings, and copy the code. | [README](src/tools/css-generator/README.md) | | [**GraphQL Formatter**](https://zykit.vercel.app/tools/graphql-formatter) | Pretty-print or minify GraphQL queries and schemas, with syntax errors shown at the exact line and column. | [README](src/tools/graphql-formatter/README.md) | | [**Protobuf Decoder**](https://zykit.vercel.app/tools/protobuf-decoder) | Decode Protocol Buffers wire-format messages from hex or Base64 without a .proto file, showing field numbers, types and nested messages. | [README](src/tools/protobuf-decoder/README.md) | -| [**Keyboard Event Viewer**](https://zykit.vercel.app/tools/keyboard-event-viewer) | Press keys and inspect each keydown and keyup: key, code, legacy keyCode, location, modifiers, Caps Lock, repeat and composition. Copy the history as JSON or Markdown. Nothing is sent anywhere. | [README](src/tools/keyboard-event-viewer/README.md) | -| [**HTML & CSS Minifier**](https://zykit.vercel.app/tools/html-css-minifier) | Shrink HTML and CSS by removing comments and whitespace without touching strings, pre blocks or scripts, or beautify them again, with before and after sizes including gzip. | [README](src/tools/html-css-minifier/README.md) | +| [**Keyboard Event Viewer**](https://zykit.vercel.app/tools/keyboard-event-viewer) | Press keys to see each keydown and keyup: key, code, legacy keyCode, location, modifiers, Caps Lock, repeat and composition. Copy the history as JSON or Markdown. | [README](src/tools/keyboard-event-viewer/README.md) | +| [**HTML & CSS Minifier**](https://zykit.vercel.app/tools/html-css-minifier) | Minify HTML and CSS by removing comments and whitespace, leaving strings, pre blocks and scripts alone, or beautify them. Shows sizes before and after, with gzip. | [README](src/tools/html-css-minifier/README.md) | ### Converters (8) @@ -105,7 +106,7 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**HTTP Headers Inspector**](https://zykit.vercel.app/tools/http-headers) | Paste raw HTTP headers to see what each one does, check security and caching headers and spot common mistakes. | [README](src/tools/http-headers/README.md) | | [**IP / CIDR Calculator**](https://zykit.vercel.app/tools/ip-cidr-calculator) | Calculate network and broadcast addresses, masks, host ranges and counts for any CIDR, and check whether an IP is in a range. | [README](src/tools/ip-cidr-calculator/README.md) | | [**SPF / DKIM / DMARC Checker**](https://zykit.vercel.app/tools/email-dns-records) | Paste SPF, DKIM, DMARC, MTA-STS or BIMI TXT records to validate them, spot mistakes and see what each part means. | [README](src/tools/email-dns-records/README.md) | -| [**HAR Viewer**](https://zykit.vercel.app/tools/har-viewer) | Open a HAR file to see every request with timing waterfall, sizes, status codes and headers, and find the slowest calls, all locally. | [README](src/tools/har-viewer/README.md) | +| [**HAR Viewer**](https://zykit.vercel.app/tools/har-viewer) | Open a HAR file to see every request with a timing waterfall, sizes, status codes and headers, and find the slowest calls, all locally. | [README](src/tools/har-viewer/README.md) | ### DevOps & Config (8) @@ -115,7 +116,7 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**Cron Expression Builder**](https://zykit.vercel.app/tools/cron-builder) | Build cron expressions visually, get them explained in plain English and see the next run times. | [README](src/tools/cron-builder/README.md) | | [**chmod Calculator**](https://zykit.vercel.app/tools/chmod-calculator) | Convert Unix file permissions between symbolic (rwxr-xr-x) and octal (755), including setuid, setgid and sticky bits. | [README](src/tools/chmod-calculator/README.md) | | [**.env Diff**](https://zykit.vercel.app/tools/env-diff) | Compare two .env files to find missing, extra and changed keys, catch duplicates and syntax problems, with values masked. | [README](src/tools/env-diff/README.md) | -| [**docker run ↔ Compose**](https://zykit.vercel.app/tools/docker-compose-converter) | Turn docker run commands into a docker-compose.yml service (ports, volumes, env, health checks, resources), or a Compose service back into docker run commands, with warnings for anything that does not map. | [README](src/tools/docker-compose-converter/README.md) | +| [**docker run ↔ Compose**](https://zykit.vercel.app/tools/docker-compose-converter) | Convert docker run commands to a docker-compose.yml and Compose services back to docker run, with warnings for anything that doesn’t map. | [README](src/tools/docker-compose-converter/README.md) | | [**Kubernetes YAML Checker**](https://zykit.vercel.app/tools/kubernetes-yaml-checker) | Paste Kubernetes YAML to check structure and best practices: resource limits, image tags, probes, security context and more. | [README](src/tools/kubernetes-yaml-checker/README.md) | | [**.gitignore Generator**](https://zykit.vercel.app/tools/gitignore-generator) | Combine presets for languages, frameworks, editors and operating systems into one clean .gitignore, and test paths against it. | [README](src/tools/gitignore-generator/README.md) | | [**nginx Config Generator**](https://zykit.vercel.app/tools/nginx-config-generator) | Generate nginx configs for static sites, SPAs, reverse proxies and redirects, with HTTPS, gzip, caching and security headers. | [README](src/tools/nginx-config-generator/README.md) | @@ -136,7 +137,7 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**Email Header Analyzer**](https://zykit.vercel.app/tools/email-header-analyzer) | Paste raw email headers to see every hop and delay, the SPF, DKIM and DMARC results, and warning signs of spoofing. | [README](src/tools/email-header-analyzer/README.md) | | [**Password Strength Checker**](https://zykit.vercel.app/tools/password-strength-checker) | Estimate a password's strength and crack time, and spot weak patterns like dictionary words, dates and keyboard runs, without it leaving your browser. | [README](src/tools/password-strength-checker/README.md) | | [**CSP Builder**](https://zykit.vercel.app/tools/csp-builder) | Build a Content-Security-Policy header directive by directive, get warnings for risky settings, and copy it for your server or meta tag. | [README](src/tools/csp-builder/README.md) | -| [**Bcrypt Generator**](https://zykit.vercel.app/tools/bcrypt-generator) | Generate bcrypt hashes with a chosen cost and check a password against an existing hash. It runs in a Web Worker in your browser and nothing is uploaded or saved. | [README](src/tools/bcrypt-generator/README.md) | +| [**Bcrypt Generator**](https://zykit.vercel.app/tools/bcrypt-generator) | Generate bcrypt hashes with a chosen cost and verify passwords against a hash. Runs in your browser; nothing is uploaded or saved. | [README](src/tools/bcrypt-generator/README.md) | ### Text (12) @@ -153,7 +154,7 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**HTML to Markdown**](https://zykit.vercel.app/tools/html-to-markdown) | Paste HTML or rich text and get tidy Markdown with headings, lists, links, tables and code blocks preserved. | [README](src/tools/html-to-markdown/README.md) | | [**Markdown Table Generator**](https://zykit.vercel.app/tools/markdown-table) | Create Markdown tables from CSV, JSON or a grid editor, align columns and pretty-print existing tables. | [README](src/tools/markdown-table/README.md) | | [**Morse Code Translator**](https://zykit.vercel.app/tools/morse-code) | Translate text to Morse code and back, play it as audio or light at your chosen speed, and learn the alphabet. | [README](src/tools/morse-code/README.md) | -| [**Text to Speech**](https://zykit.vercel.app/tools/text-to-speech) | Have text read aloud using the voices built into your device, with speed, pitch and voice choice. The text stays in the page, but some voices are processed by your browser or OS vendor. | [README](src/tools/text-to-speech/README.md) | +| [**Text to Speech**](https://zykit.vercel.app/tools/text-to-speech) | Read text aloud with your device’s built-in voices and choose voice, speed and pitch. Online voices may send text to your browser or OS vendor. | [README](src/tools/text-to-speech/README.md) | ### Web (9) @@ -177,7 +178,7 @@ Live at [zykit.vercel.app](https://zykit.vercel.app). | [**PDF Metadata Cleaner**](https://zykit.vercel.app/tools/pdf-metadata-cleaner) | Inspect a PDF's author, software, dates and XMP metadata, then remove it without changing the pages. Nothing is uploaded. | [README](src/tools/pdf-metadata-cleaner/README.md) | | [**Office Metadata Cleaner**](https://zykit.vercel.app/tools/office-metadata-cleaner) | Inspect and remove author, company, revision, comments and custom properties from .docx, .xlsx and .pptx files, locally. | [README](src/tools/office-metadata-cleaner/README.md) | | [**Images to PDF**](https://zykit.vercel.app/tools/images-to-pdf) | Turn photos or scans into a single PDF with page size, margins, orientation and order you choose, all in your browser. | [README](src/tools/images-to-pdf/README.md) | -| [**Duplicate File Finder**](https://zykit.vercel.app/tools/duplicate-file-finder) | Select files or a folder to find exact duplicates by SHA-256 hash, see wasted space and export a report. Files never leave your device. | [README](src/tools/duplicate-file-finder/README.md) | +| [**Duplicate File Finder**](https://zykit.vercel.app/tools/duplicate-file-finder) | Find exact duplicate files by SHA-256 hash, see the wasted space and export a report. Files never leave your device. | [README](src/tools/duplicate-file-finder/README.md) | | [**Invoice Generator**](https://zykit.vercel.app/tools/invoice-generator) | Fill in your business, client and line items to produce a clean PDF invoice with taxes and totals. Nothing is uploaded. | [README](src/tools/invoice-generator/README.md) | | [**PDF to Images**](https://zykit.vercel.app/tools/pdf-to-images) | Turn every page of a PDF into JPG, PNG or WebP images at the resolution you choose, and download them as a ZIP. Nothing is uploaded. | [README](src/tools/pdf-to-images/README.md) | diff --git a/docs/tool-roadmap.md b/docs/tool-roadmap.md new file mode 100644 index 0000000..596d4c9 --- /dev/null +++ b/docs/tool-roadmap.md @@ -0,0 +1,391 @@ +# Zykit tool roadmap: prompts for upcoming work + +This roadmap reviews the 23 tools proposed in `dokit-new-tool-prompts.md` against what Zykit already ships (115 tools, October 2026). For each one it says whether it's **new**, an **improvement** to an existing tool, or **already covered**, and gives a ready-to-paste prompt. + +Work through it one item per session. Each item is sized to finish, test and review in one run. + +## How to use this file + +1. Open the repo in Claude Code. +2. Paste the **Shared instructions** below, then exactly one item's prompt. +3. When it's done, tick the item's checkbox in the status table and commit. + +## Shared instructions (paste with every prompt) + +> You're working in **Zykit** (this repo): a React 19 + Vite + Tailwind v4 + TypeScript site of private, in-browser tools. Read `docs/adding-a-tool.md` first and follow it. +> +> - **New tool:** scaffold it with `npm run new:tool -- --name "" --category "" --icon `. Use an existing category from `CATEGORY_ORDER` in `src/tools/registry.ts`, and an icon name from `src/shared/ui/ui.tsx`. **Improvement:** edit the existing folder `src/tools//` only. +> - **Docs:** fill in `docs.ts` (3–5 how-to steps, how it works, real limits, privacy, at least 3 FAQs) and `README.md` (Purpose, File Structure, Core Logic, Limits, Tests, Known Gaps) from the actual code. `tests/tools/docs.test.ts` rejects any leftover TODO. +> - **Reuse before writing:** +> - shared UI: `src/shared/ui/*` (`Select` instead of a native ` ({ value: s.id, label: s.label }))} onChange={loadSample} /> + + Undo + + + Redo + + { + importFile(Array.from(e.target.files ?? [])); + e.target.value = ''; + }} + /> + fileInput.current?.click()}> + Import JSON + + downloadText(exportProject(project), 'postgres-project.json', 'application/json')}> + Export JSON + + { + if (!window.confirm('Remove all tables, relationships and the query? You can undo this.')) return; + apply(() => emptyProject()); + setSelectedTable(null); + }} + > + Reset + + + {error && setError('')} />} + +
+ { + setTab(t); + if (t !== 'reference') setSqlView(t === 'query' ? 'query' : 'schema'); + }} + /> + + {tab === 'query' && ( +
+ {isEmpty(project) ? ( + { + setTab('schema'); + setSqlView('schema'); + }} /> + ) : ( + apply((p) => ({ ...p, query: fn(p.query) }), k)} /> + )} +
+ +
+
+ )} + + {tab === 'schema' && ( +
+
+ +
+ setSelectedRel(id)} + onMove={(id, x, y, done) => { + applyLive((p) => ({ ...p, schema: { ...p.schema, tables: p.schema.tables.map((t) => (t.id === id ? { ...t, x, y } : t)) } })); + if (done) endGesture(); + }} + onConnect={(a, b) => setDraft(draftFromConnect(schema, a, b))} + /> +
+
+
0 && ( +