{"id":48744935,"url":"https://github.com/pruthivithejan/r10n","last_synced_at":"2026-05-28T04:01:21.344Z","repository":{"id":330333921,"uuid":"999704167","full_name":"pruthivithejan/r10n","owner":"pruthivithejan","description":"A modern, versatile automation toolkit for bulk operations - emails, certificates, contacts, images, and more. Built with Python, enhanced with UV for blazing-fast performance, and featuring a beautiful CLI interface.","archived":false,"fork":false,"pushed_at":"2026-05-27T12:20:53.000Z","size":5117,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T13:26:07.963Z","etag":null,"topics":["automation","python"],"latest_commit_sha":null,"homepage":"https://pruthivithejan.github.io/r10n/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pruthivithejan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-06-10T16:53:28.000Z","updated_at":"2026-05-27T12:20:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pruthivithejan/r10n","commit_stats":null,"previous_names":["pruthivithejan/r10n"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/pruthivithejan/r10n","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pruthivithejan%2Fr10n","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pruthivithejan%2Fr10n/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pruthivithejan%2Fr10n/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pruthivithejan%2Fr10n/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pruthivithejan","download_url":"https://codeload.github.com/pruthivithejan/r10n/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pruthivithejan%2Fr10n/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33593400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","python"],"created_at":"2026-04-12T10:04:48.171Z","updated_at":"2026-05-28T04:01:21.338Z","avatar_url":"https://github.com/pruthivithejan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# r10n\n\n**Routine Automation** - Automate repetitive tasks with a beautiful CLI.\n\n[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![uv](https://img.shields.io/badge/uv-Package%20Manager-green.svg)](https://docs.astral.sh/uv/)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n## Features\n\n- **Contacts** - Generate VCF contact cards from phone numbers\n- **Fill PDFs** - Fill PDF templates with data from CSV/TXT files\n- **Images** - Optimize and convert images to WebP format\n- **Email** - Send bulk personalized emails with attachments\n- **Persistent terminal UI** - Run `r10n` once, choose automations from the home screen, and stay in the session until Ctrl+C\n- **Interactive commands** - Step-by-step prompts guide you through each automation\n- **Colors** - Convert CSS color codes (hex, hsl/hsla) to `oklch()` for perceptual color consistency\n- **Fast** - Powered by [uv](https://docs.astral.sh/uv/) for lightning-fast dependency management\n\n## Quick Start\n\n### Run Instantly (No Installation)\n\nUse `uvx` to run `r10n` without cloning the repository. This installs only the runtime dependencies needed to execute the commands.\n\n```bash\nuvx --from git+https://github.com/pruthivithejan/r10n.git r10n --help\n```\n\n### Setup Locally\n\nFor local development or persistent use, clone the repository. `uv sync` installs all dependencies, including local contributor tooling like `zensical` for documentation and `pytest` for testing.\n\n```bash\ngit clone https://github.com/pruthivithejan/r10n.git\ncd r10n\nuv sync\nuv run r10n --help\n```\n\n### Install Binary (curl)\n\nInstall a prebuilt CLI app (no Python or uv required):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/pruthivithejan/r10n/main/install.sh | sh\n```\n\nSafer alternative:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/pruthivithejan/r10n/main/install.sh -o install.sh\nsh install.sh\n```\n\nUpdate later with:\n\n```bash\nr10n upgrade\n```\n\nIf an older installed binary fails during upgrade with a TLS certificate error, reinstall once with the same curl installer, then run `r10n --version`.\n\nLaunch the installed terminal UI:\n\n```bash\nr10n\n```\n\n## Usage\n\nEach command is interactive - just run it and follow the prompts:\n\n```bash\n# Open the persistent home UI\nr10n\n\n# Generate contact cards\nuvx --from git+https://github.com/pruthivithejan/r10n.git r10n contacts\n\n# Fill PDFs\nuvx --from git+https://github.com/pruthivithejan/r10n.git r10n fill-pdfs\n\n# Optimize images\nuvx --from git+https://github.com/pruthivithejan/r10n.git r10n images\n\n# Send emails\nuvx --from git+https://github.com/pruthivithejan/r10n.git r10n email\n```\n\n## Example\n\n```\n$ uvx --from git+https://github.com/pruthivithejan/r10n.git r10n contacts\n\n  ██████╗  ██╗ ██████╗ ███╗   ██╗\n  ██╔══██╗███║██╔═══██╗████╗  ██║\n  ██████╔╝╚██║██║   ██║██╔██╗ ██║\n  ██╔══██╗ ██║██║   ██║██║╚██╗██║\n  ██║  ██║ ██║╚██████╔╝██║ ╚████║\n  ╚═╝  ╚═╝ ╚═╝ ╚═════╝ ╚═╝  ╚═══╝\n\nStep 1/3: Select input file\n  Enter path to file with phone numbers: numbers.txt\nStep 2/3: Set contact name prefix\n  Enter prefix for contact names: Customer\nStep 3/3: Set output file\n  Enter output VCF file path: contacts.vcf\n\nProceed with contact generation? [y/n]: y\n\nDone!\n┌─────────────────────┬──────────────┐\n│ Total numbers       │ 50           │\n│ Valid contacts      │ 48           │\n│ Duplicates removed  │ 1            │\n│ Invalid numbers     │ 1            │\n│ Output file         │ contacts.vcf │\n└─────────────────────┴──────────────┘\n```\n\n## Documentation\n\nFull documentation is available at [pruthivithejan.github.io/r10n](https://pruthivithejan.github.io/r10n/)\n\n- [Get Started](https://pruthivithejan.github.io/r10n/get-started/)\n- [Run on Terminal](https://pruthivithejan.github.io/r10n/run-on-terminal/)\n- [Setup Locally](https://pruthivithejan.github.io/r10n/setup-locally/)\n\n## Requirements\n\n- For `uvx` / local source install: Python 3.10+ and [uv](https://docs.astral.sh/uv/)\n- For prebuilt binary install: `curl` (macOS/Linux)\n\n## Local Development\n\n```bash\n# Clone\ngit clone https://github.com/pruthivithejan/r10n.git\ncd r10n\n\n# Install dependencies\nuv sync\n\n# Initialize local folder\nuv run r10n init\n\n# Run automations\nuv run r10n contacts\nuv run r10n fill-pdfs\nuv run r10n images\nuv run r10n email\n\n# Run tests\nuv run pytest\n\n# Build docs\nuv run zensical serve\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Author\n\n**Pruthivi Thejan** - [@pruthivithejan](https://github.com/pruthivithejan)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpruthivithejan%2Fr10n","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpruthivithejan%2Fr10n","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpruthivithejan%2Fr10n/lists"}