From 86cb67d5d5ccd0fc677eaecc65802da0ecb73c40 Mon Sep 17 00:00:00 2001 From: listyantidewi1 Date: Mon, 20 Apr 2026 14:43:43 +0700 Subject: [PATCH] added more tools and bug fixes --- CHANGELOG.md | 79 +++++ README.md | 47 ++- app.py | 47 +++ requirements.txt | 3 + routes/archive_tools.py | 176 +++++++++ routes/dev_tools.py | 212 +++++++++++ routes/media_tools.py | 474 +++++++++++++++++++++++++ routes/pdf_tools.py | 74 +++- routes/security_tools.py | 40 ++- screenshots/1.png | Bin 108037 -> 0 bytes screenshots/1a.png | Bin 0 -> 117998 bytes screenshots/1b.png | Bin 0 -> 120720 bytes screenshots/1c.png | Bin 0 -> 152079 bytes screenshots/1d.png | Bin 0 -> 115626 bytes screenshots/1e.png | Bin 0 -> 37991 bytes screenshots/2.png | Bin 122610 -> 0 bytes screenshots/3.png | Bin 111865 -> 0 bytes templates/tools/cron_parser.html | 85 +++++ templates/tools/css_formatter.html | 92 +++++ templates/tools/html_formatter.html | 133 +++++++ templates/tools/js_formatter.html | 147 ++++++++ templates/tools/jsonpath_tester.html | 108 ++++++ templates/tools/jwt_decoder.html | 106 ++++++ templates/tools/sql_formatter.html | 80 +++++ templates/tools/user_agent_parser.html | 89 +++++ templates/tools/uuid_generator.html | 81 +++++ templates/tools/xml_formatter.html | 99 ++++++ templates/upload_tool.html | 2 +- 28 files changed, 2154 insertions(+), 20 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 routes/archive_tools.py create mode 100644 routes/dev_tools.py create mode 100644 routes/media_tools.py delete mode 100644 screenshots/1.png create mode 100644 screenshots/1a.png create mode 100644 screenshots/1b.png create mode 100644 screenshots/1c.png create mode 100644 screenshots/1d.png create mode 100644 screenshots/1e.png delete mode 100644 screenshots/2.png delete mode 100644 screenshots/3.png create mode 100644 templates/tools/cron_parser.html create mode 100644 templates/tools/css_formatter.html create mode 100644 templates/tools/html_formatter.html create mode 100644 templates/tools/js_formatter.html create mode 100644 templates/tools/jsonpath_tester.html create mode 100644 templates/tools/jwt_decoder.html create mode 100644 templates/tools/sql_formatter.html create mode 100644 templates/tools/user_agent_parser.html create mode 100644 templates/tools/uuid_generator.html create mode 100644 templates/tools/xml_formatter.html diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..38e5312 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,79 @@ +# Changelog + +All notable changes to **Your Everyday Tools** are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project loosely follows [Semantic Versioning](https://semver.org/). + +## [0.4.1] — 2026-04-20 + +### Fixed +- **PDF Compress** no longer breaks page layout. Compressed images are now replaced in-place via `page.replace_image(xref, ...)` instead of being re-inserted at full page dimensions, so the original placement, size, and positioning matrix are preserved. Images shared across multiple pages are also deduplicated so they're only recompressed once. +- **PDF Resize** now actually scales page content instead of only changing the media box (which previously just cropped the visible area, leaving images and text clipped or misaligned). Scale mode renders each page onto a new page at the new size; paper-size mode fits content into the target with aspect ratio preserved and orientation matched. +- **Upload UI** — the invisible file input no longer covers the uploaded file list. The remove buttons on each listed file are now clickable. Structural fix: `.file-list` is now a sibling of `.upload-zone` rather than a child. + +### Added +- Per-quality image-dimension cap on PDF Compress (1200/1800/2400 px max edge for low/medium/high) so photo-heavy PDFs actually shrink. + +## [0.4.0] — 2026-04-20 + +### Added — Developer Utilities (new category, 10 tools) +- **UUID Generator** (client-side) — v4 UUIDs, bulk generation, formatting options. +- **JWT Decoder** (client-side) — decodes JWT header/payload/signature; does not verify signatures. +- **User-Agent Parser** (client-side) — extracts browser, OS, device, and engine. +- **SQL Formatter** — pretty-prints SQL via `sqlparse` with configurable keyword case and indent. +- **XML Formatter** (client-side) — format, validate, and minify XML via DOMParser. +- **HTML Formatter** (client-side) — beautify/minify with correct handling of void tags, inline tags, and raw-content blocks. +- **CSS Formatter** (client-side) — indent-aware beautify/minify. +- **JS Formatter** (client-side) — basic beautify/minify with string and comment protection. +- **Cron Parser** — validates expressions and previews upcoming runs via `croniter`. +- **JSONPath Tester** — evaluates JSONPath expressions via `jsonpath-ng`. + +### Added — Archive Tools (new category, 3 tools) +- **Create ZIP** — bundle multiple files with Deflate or Store compression. +- **Extract ZIP** — extract archive contents (500 MB cap; encrypted ZIPs rejected). +- **ZIP Info** — list entries with sizes, dates, and overall compression ratio. + +### Added — Audio & Video (new category, 6 tools — requires FFmpeg on PATH) +- **Convert Audio** — MP3/WAV/OGG/FLAC/AAC/M4A/Opus with adjustable bitrate. +- **Convert Video** — MP4/WebM/MKV/MOV/AVI with sensible codec defaults. +- **Extract Audio** — pull audio track from a video file. +- **Trim Media** — cut by start/end time; stream-copy first, re-encodes on failure. +- **Compress Video** — H.264 re-encode at configurable CRF and preset. +- **Video to GIF** — with FPS, width, start, and duration options. + +### Added — Security +- **File Hash** — streaming MD5/SHA-1/SHA-256/SHA-512 of uploaded files. + +### Added — Dependencies +- `sqlparse`, `croniter`, `jsonpath-ng` added to `requirements.txt`. +- FFmpeg documented as an optional external binary; each media tool page shows install instructions and a detected/not-detected banner. + +## [0.3.0] — 2026-04-19 + +### Added — Spreadsheet (new category, 6 tools) +- **Excel to CSV / JSON** — export sheets from `.xlsx` / `.xls` to CSV or JSON (array-of-objects or array-of-arrays), single sheet or all sheets as ZIP. +- **CSV / JSON to Excel** — build `.xlsx` from CSV/JSON files, one sheet per file, optional bold/shaded header row. +- **Excel to PDF** — one section per sheet, configurable page size, orientation, and font size. 5000-row cap per sheet. +- **Merge Workbooks** — combine multiple Excel files, optionally prefixing sheet names with source filename. +- **Split Sheets** — export each sheet as its own `.xlsx`. +- **Excel Info & Preview** — list sheet names, row/column counts, and preview rows. + +### Added — Dependencies +- `openpyxl` (required) and `xlrd` (for legacy `.xls` read) added to `requirements.txt`. + +## [0.2.0] — 2026-04-19 + +### Added +- **OCR PDF** — make scanned PDFs searchable (image + hidden text layer) or extract text. 14 languages supported via optional `pytesseract`. +- **CAD to PDF / Image** — render DXF directly via `ezdxf` + `matplotlib`. DWG supported via optional **ODA File Converter** (auto-detected on PATH). Full install guide added to README and to the CAD tool page. +- **Animated WebP / GIF** — convert between the two formats, preserving per-frame durations. + +### Removed +- MIT license badge from README (project has no license). + +## [0.1.0] — 2026-04-18 + +### Added +- Initial release — 48 tools across 7 categories: Document Conversion, PDF Tools, Image Tools, Text & Data, Calculators, QR Code, Security. +- One universal upload template (`upload_tool.html`) powering all server-side tools. +- Client-side-only tools for text utilities, calculators, password and hash generators. +- Graceful degradation for heavy optional dependencies (`rembg`, `pyzbar`, `pdf2docx`). +- Screenshots, README, `.gitignore`. diff --git a/README.md b/README.md index 00d9f80..4233ab2 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # Your Everyday Tools -A lightweight, self-hosted web app that bundles 57 everyday utilities into a single interface. Built with Python + Flask, zero JavaScript frameworks, and minimal CSS — no bloat, just tools. +A lightweight, self-hosted web app that bundles 77 everyday utilities into a single interface. Built with Python + Flask, zero JavaScript frameworks, and minimal CSS — no bloat, just tools. ![Python](https://img.shields.io/badge/Python-3.10+-blue) ![Flask](https://img.shields.io/badge/Flask-3.x-green) +See [CHANGELOG.md](CHANGELOG.md) for release history and recent fixes. + --- ## Screenshots @@ -107,6 +109,38 @@ A lightweight, self-hosted web app that bundles 57 everyday utilities into a sin |------|-------------| | **Password Generator** | Generate strong random passwords with configurable length, character types, and entropy display | | **Hash Generator** | Generate MD5, SHA-1, SHA-256, and SHA-512 hashes from text | +| **File Hash** | Compute MD5, SHA-1, SHA-256, and SHA-512 hashes of an uploaded file (streamed, no size cap beyond upload limit) | + +### Developer Utilities +| Tool | Description | +|------|-------------| +| **UUID Generator** | Generate v4 UUIDs — single or bulk (up to 1000), with uppercase, brace, and no-dash formatting | +| **JWT Decoder** | Decode JSON Web Tokens client-side to inspect header, payload, and claims (decode only — does not verify signatures) | +| **User-Agent Parser** | Parse browser, OS, device, and engine from any User-Agent string | +| **SQL Formatter** | Pretty-print SQL with configurable keyword casing (UPPER / lower / Capitalize) and indentation — powered by `sqlparse` | +| **XML Formatter** | Format, validate, and minify XML using the browser's native DOMParser | +| **HTML Formatter** | Beautify or minify HTML source (void tags, inline tags, and ` +{% endblock %} diff --git a/templates/tools/css_formatter.html b/templates/tools/css_formatter.html new file mode 100644 index 0000000..91fce9e --- /dev/null +++ b/templates/tools/css_formatter.html @@ -0,0 +1,92 @@ +{% extends "base.html" %} +{% block title %}CSS Formatter - EveryTools{% endblock %} +{% block top_title %}CSS Formatter{% endblock %} + +{% block content %} +
+
+

CSS Formatter

+

Beautify or minify CSS

+
+
+
+
+ Input +
+ + +
+
+
+ +
+
+
+
+ Output + +
+
+

+            
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/html_formatter.html b/templates/tools/html_formatter.html new file mode 100644 index 0000000..54e31a9 --- /dev/null +++ b/templates/tools/html_formatter.html @@ -0,0 +1,133 @@ +{% extends "base.html" %} +{% block title %}HTML Formatter - EveryTools{% endblock %} +{% block top_title %}HTML Formatter{% endblock %} + +{% block content %} +
+
+

HTML Formatter

+

Beautify or minify HTML source

+
+
+
+
+ Input +
+ + +
+
+
+ +
+
+
+
+ Output + +
+
+

+            
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/js_formatter.html b/templates/tools/js_formatter.html new file mode 100644 index 0000000..e724191 --- /dev/null +++ b/templates/tools/js_formatter.html @@ -0,0 +1,147 @@ +{% extends "base.html" %} +{% block title %}JS Formatter - EveryTools{% endblock %} +{% block top_title %}JS Formatter{% endblock %} + +{% block content %} +
+
+

JavaScript Formatter

+

Basic beautification and minification. For complex code, use a full tool like Prettier.

+
+
+
+
+ Input +
+ + +
+
+
+ +
+
+
+
+ Output + +
+
+

+            
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/jsonpath_tester.html b/templates/tools/jsonpath_tester.html new file mode 100644 index 0000000..e8aa7a0 --- /dev/null +++ b/templates/tools/jsonpath_tester.html @@ -0,0 +1,108 @@ +{% extends "base.html" %} +{% block title %}JSONPath Tester - EveryTools{% endblock %} +{% block top_title %}JSONPath Tester{% endblock %} + +{% block content %} +
+
+

JSONPath Tester

+

Query JSON data using JSONPath expressions

+
+ +
+ + +
+ +
+ + + + + +
+ +
+
+
JSON Input
+
+ +
+
+
+
+ Matches + +
+
+
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/jwt_decoder.html b/templates/tools/jwt_decoder.html new file mode 100644 index 0000000..1cc7c70 --- /dev/null +++ b/templates/tools/jwt_decoder.html @@ -0,0 +1,106 @@ +{% extends "base.html" %} +{% block title %}JWT Decoder - EveryTools{% endblock %} +{% block top_title %}JWT Decoder{% endblock %} + +{% block content %} +
+
+

JWT Decoder

+

Decode header and payload of a JSON Web Token. Signatures are NOT verified — do not trust decoded content without verification.

+
+ +
+ + +
+ +
+ +
+
+
+ Header (algorithm & type) + +
+
+
+
+
+ Payload (claims) + +
+
+
+
+ +
+
+ Signature + +
+
+
+ +
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/sql_formatter.html b/templates/tools/sql_formatter.html new file mode 100644 index 0000000..25a52e7 --- /dev/null +++ b/templates/tools/sql_formatter.html @@ -0,0 +1,80 @@ +{% extends "base.html" %} +{% block title %}SQL Formatter - EveryTools{% endblock %} +{% block top_title %}SQL Formatter{% endblock %} + +{% block content %} +
+
+

SQL Formatter

+

Format SQL statements with proper indentation and keyword casing

+
+ +
+ + + +
+ +
+
+
Input
+
+ +
+
+
+
+ Output + +
+
+
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/user_agent_parser.html b/templates/tools/user_agent_parser.html new file mode 100644 index 0000000..dd76d05 --- /dev/null +++ b/templates/tools/user_agent_parser.html @@ -0,0 +1,89 @@ +{% extends "base.html" %} +{% block title %}User-Agent Parser - EveryTools{% endblock %} +{% block top_title %}User-Agent Parser{% endblock %} + +{% block content %} +
+
+

User-Agent Parser

+

Extract browser, OS, and device info from a User-Agent string.

+
+ +
+ + +
+ +
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/uuid_generator.html b/templates/tools/uuid_generator.html new file mode 100644 index 0000000..083b8ed --- /dev/null +++ b/templates/tools/uuid_generator.html @@ -0,0 +1,81 @@ +{% extends "base.html" %} +{% block title %}UUID Generator - EveryTools{% endblock %} +{% block top_title %}UUID Generator{% endblock %} + +{% block content %} +
+
+

UUID Generator

+

Generate v4 (random) and nil UUIDs. Optionally generate many at once.

+
+ +
+
+ + +
+ +
+ +
+ + + +
+ +
+
+ Output + +
+
+

+        
+
+ +
+

Special values: + + +

+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/tools/xml_formatter.html b/templates/tools/xml_formatter.html new file mode 100644 index 0000000..389506c --- /dev/null +++ b/templates/tools/xml_formatter.html @@ -0,0 +1,99 @@ +{% extends "base.html" %} +{% block title %}XML Formatter - EveryTools{% endblock %} +{% block top_title %}XML Formatter{% endblock %} + +{% block content %} +
+
+

XML Formatter

+

Format, validate, and minify XML data

+
+
+
+
+ Input +
+ + +
+
+
+ +
+
+
+
+ Output + +
+
+

+            
+
+
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/templates/upload_tool.html b/templates/upload_tool.html index 116dbae..8974f4d 100644 --- a/templates/upload_tool.html +++ b/templates/upload_tool.html @@ -32,8 +32,8 @@ or click to browse {% if accept %}Accepted: {{ accept }}{% endif %} -
+
{% endif %} {% if options %}