Metadata-Version: 2.5
Name: streamlit-mini-toolkit
Version: 0.1.1
Summary: 25 everyday utilities (image, document, text and web tools) in one Streamlit app.
Project-URL: Homepage, https://github.com/sarif-mia/mini-toolkit
Project-URL: Source, https://github.com/sarif-mia/mini-toolkit
Project-URL: Tracker, https://github.com/sarif-mia/mini-toolkit/issues
Author: Sarif Mia
License-Expression: MIT
License-File: LICENSE
Keywords: image,pdf,qr-code,seo,streamlit,toolkit,utilities
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Requires-Dist: beautifulsoup4>=4.12
Requires-Dist: fpdf2>=2.7.8
Requires-Dist: gtts>=2.5
Requires-Dist: pillow>=10.1
Requires-Dist: pypdf>=4.0
Requires-Dist: python-docx>=1.1
Requires-Dist: qrcode>=7.4
Requires-Dist: requests>=2.31
Requires-Dist: streamlit-image-coordinates>=0.1.9
Requires-Dist: streamlit>=1.50
Provides-Extra: all
Requires-Dist: docx2pdf>=0.1.8; (sys_platform != 'linux') and extra == 'all'
Requires-Dist: opencv-python-headless>=4.8; extra == 'all'
Requires-Dist: pdf2docx>=0.5.8; extra == 'all'
Requires-Dist: pytesseract>=0.3.10; extra == 'all'
Requires-Dist: pywin32; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: rembg[cpu]>=2.0.50; extra == 'all'
Provides-Extra: bg
Requires-Dist: rembg[cpu]>=2.0.50; extra == 'bg'
Provides-Extra: docs
Requires-Dist: docx2pdf>=0.1.8; (sys_platform != 'linux') and extra == 'docs'
Requires-Dist: pdf2docx>=0.5.8; extra == 'docs'
Requires-Dist: pywin32; (sys_platform == 'win32') and extra == 'docs'
Provides-Extra: ocr
Requires-Dist: opencv-python-headless>=4.8; extra == 'ocr'
Requires-Dist: pytesseract>=0.3.10; extra == 'ocr'
Provides-Extra: test
Requires-Dist: pytest>=7; extra == 'test'
Description-Content-Type: text/markdown

# 🧰 Mini Toolkit

A collection of 25 everyday utilities — image editing, document conversion, text tools and website checks — in one fast, clean Streamlit app. No sign-up, no clutter.

## Tools

| Category | Tools |
| --- | --- |
| **Image** | Background Remover · Image Converter · Image Enhancer · Image Watermarker · Image Color Picker · QR Code Generator · OCR Text Extractor |
| **Documents** | Document Converter (DOCX ↔ PDF ↔ TXT) · PDF Merge & Split · File Compressor · Resume Builder · Email Signature |
| **Text & Security** | Text Utilities · Text to Speech · Hash Generator · Password Checker & Generator |
| **Web & Developer** | Website Status · Page Speed Checker · SSL Certificate Checker · SEO Health Check · Website Image Downloader · URL Shortener · Website Change Tracker · GitHub Trending · Chat Alert Bot (Slack / Teams / Discord) |

Every tool has its own shareable URL, e.g. `/?tool=qr-code`.

## Install from PyPI

```sh
pip install streamlit-mini-toolkit          # core tools
pip install "streamlit-mini-toolkit[all]"   # + background remover, OCR, DOCX/PDF conversion
mini-toolkit                                # opens the app at http://localhost:8501
```

Pick extras individually if you prefer: `[bg]` (Background Remover), `[ocr]` (OCR Text Extractor), `[docs]` (DOCX ↔ PDF).

| Command | Does |
| --- | --- |
| `mini-toolkit --port 8080` | Run on another port |
| `mini-toolkit --list` | List every tool and its direct URL |
| `mini-toolkit --version` | Show the installed version |

Any other Streamlit option passes through, e.g. `mini-toolkit --server.headless true`.

## Quick start (from source)

Requires Python 3.9+.

```sh
git clone https://github.com/sarif-mia/mini-toolkit.git
cd mini-toolkit
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py
```

The app opens at <http://localhost:8501>.

### System dependencies (optional)

A few tools call external programs. Everything else works without them.

| Feature | Needs |
| --- | --- |
| OCR Text Extractor | [Tesseract](https://tesseract-ocr.github.io/tessdoc/Installation.html) |
| DOCX → PDF | [LibreOffice](https://www.libreoffice.org/) (or Microsoft Word on Windows/macOS) |

On Debian/Ubuntu: `sudo xargs apt-get install -y < packages.txt`

## Deployment

### Streamlit Community Cloud (recommended, free)

1. Go to [share.streamlit.io](https://share.streamlit.io) and sign in with GitHub.
2. **Create app** → pick this repository, branch `master`, main file `app.py`.
3. Deploy. `requirements.txt` and `packages.txt` are picked up automatically.

### Docker (Render, Railway, Fly.io, Hugging Face Spaces, …)

```sh
docker build -t mini-toolkit .
docker run -p 8501:8501 mini-toolkit
```

> **Why not Vercel?** Vercel runs short-lived serverless functions, while Streamlit needs a long-running server with a persistent WebSocket connection. Use one of the options above instead.

### Optional secrets

The Website Change Tracker can email change summaries. Add these to `.streamlit/secrets.toml` locally, or to your host's secrets settings:

```toml
smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_user = "you@example.com"
smtp_pass = "app-password"
```

## Project structure

```
app.py               Entry point: page config, routing, home page
core/
  registry.py        List of tools and categories (add new tools here)
  ui.py              Shared UI helpers (headers, uploads, ZIP export, footer)
  net.py             Safe HTTP fetching for the web tools
tools/               One module per tool, each exposing render()
style/style.css      Custom styling
.streamlit/          Theme and server config
```

### Adding a tool

1. Create `tools/my_tool.py` with a `render()` function.
2. Register it in `core/registry.py`:
   ```python
   Tool("my-tool", "My Tool", "🧪", "One-line description.", TEXT, "my_tool"),
   ```

Tools are imported lazily, so a missing optional dependency only affects that one tool.

## License

Distributed under the MIT License. See [`LICENSE`](LICENSE).

---

Built by [Sarif](https://sarifmiia.netlify.app/) · [GitHub](https://github.com/sarif-mia) · [LinkedIn](https://www.linkedin.com/in/sarif-mia/)
