{"id":50349818,"url":"https://github.com/nathievzm/lumi","last_synced_at":"2026-05-29T21:00:31.177Z","repository":{"id":354880287,"uuid":"1225657199","full_name":"nathievzm/lumi","owner":"nathievzm","description":"🌸 your lightning-fast and interactive cli companion to resize, convert, and optimize media in seconds.","archived":false,"fork":false,"pushed_at":"2026-05-29T18:19:05.000Z","size":224,"stargazers_count":5,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T20:03:22.577Z","etag":null,"topics":["batch-processing","bun","cli","cli-app","cli-tool","concurrency","image-optimization","image-processing","image-resizer","media-processing","sharp","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@nathievzm/lumi","language":"TypeScript","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/nathievzm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-04-30T13:55:50.000Z","updated_at":"2026-05-29T18:19:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"795686af-7ae5-4d57-8950-423a842da84c","html_url":"https://github.com/nathievzm/lumi","commit_stats":null,"previous_names":["nathievzm/media-transformer","nathievzm/lumi"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/nathievzm/lumi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathievzm%2Flumi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathievzm%2Flumi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathievzm%2Flumi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathievzm%2Flumi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathievzm","download_url":"https://codeload.github.com/nathievzm/lumi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathievzm%2Flumi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33670211,"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-29T02:00:06.066Z","response_time":107,"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":["batch-processing","bun","cli","cli-app","cli-tool","concurrency","image-optimization","image-processing","image-resizer","media-processing","sharp","typescript"],"created_at":"2026-05-29T21:00:18.008Z","updated_at":"2026-05-29T21:00:31.146Z","avatar_url":"https://github.com/nathievzm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ✨ lumi ✨\n\nA fast, interactive CLI tool for batch image processing. Resize, convert, and optimize your images with ease, powered by\n[Bun](https://bun.sh) and [Sharp](https://sharp.pixelplumbing.com/).\n\n## 🚀 Features\n\n- **Batch Processing:** Process hundreds of images in seconds with high concurrency.\n- **Interactive UI:** User-friendly prompts for missing configurations using `@clack/prompts`.\n- **Recursive Processing:** Optionally find all images in subdirectories using the recursive flag.\n- **Progress Tracking:** Real-time feedback with interactive progress indicators.\n- **Smart Resizing:** Automatically fits images while maintaining aspect ratio (`contain` fit).\n- **Multi-Format Support:** Convert between all formats supported by Sharp (WebP, PNG, JPEG, GIF, AVIF, etc.).\n- **Animated Support:** Seamlessly handles animated GIFs and WebP files.\n- **Concurrency Control:** Fine-tune performance with configurable processing limits.\n- **Environment Driven:** Fully configurable via `.env` files or CLI flags.\n- **Update Notifications:** Automatically alerts you when a new version is available.\n\n## 📦 Installation\n\nYou don't even need to install it if you use `bunx`! Run it directly from anywhere in your terminal:\n\n```bash\nbunx @nathievzm/lumi\n```\n\nOr install it globally:\n\n```bash\nbun install -g @nathievzm/lumi\n```\n\n## 🛠️ Usage\n\nIf installed globally, simply run:\n\n```bash\nlumi [options]\n```\n\n### Interactive Mode\n\nIf you run **lumi** without providing required flags (like dimensions or output formats), it will guide you through the\nconfiguration using cute, interactive prompts.\n\n- **Dimensions:** You can enter a single number for square images (e.g., `1080`) or two numbers for custom dimensions\n  (e.g., `1920 1080`).\n- **Formats:** Choose specific output formats for each unique extension found in your input!\n- **Folders:** By default, **lumi** uses your current directory as the input and creates an `output` folder for the\n  results.\n\n### CLI Options\n\nYou can bypass the prompts by providing the flags directly:\n\n```bash\nbunx @nathievzm/lumi -i ./my-vacation-pics -s 1080 -f .webp\n```\n\n| Flag          | Shortcut | Description                   | Default / Env                |\n| :------------ | :------- | :---------------------------- | :--------------------------- |\n| `--input`     | `-i`     | Input directory path          | `.` / `INPUT_FOLDER`         |\n| `--output`    | `-o`     | Output directory path         | `./output` / `OUTPUT_FOLDER` |\n| `--width`     | `-w`     | Target width in pixels        | Prompt / `WIDTH`             |\n| `--height`    | `-h`     | Target height in pixels       | Prompt / `HEIGHT`            |\n| `--size`      | `-s`     | Sets both width and height    | -                            |\n| `--format`    | `-f`     | Output format (e.g., `.webp`) | Prompt / `FORMAT`            |\n| `--limit`     | `-l`     | Max concurrent operations     | `10` / `LIMIT`               |\n| `--recursive` | `-r`     | Process subdirectories        | `false` / `RECURSIVE`        |\n\n### 🌍 Environment Variables\n\n**lumi** also reads from a `.env` file in your current working directory. This is useful for saving your preferred\ndefaults:\n\n```env\nWIDTH = '800'\nHEIGHT = '600'\nINPUT_FOLDER = './input'\nOUTPUT_FOLDER = './output'\nFORMAT = '.webp'\nLIMIT = '10'\nRECURSIVE = 'false'\n```\n\n---\n\n## 🧑‍💻 Local Development\n\nIf you want to contribute or run the project from source:\n\n### Clone the repository\n\n```bash\ngit clone https://github.com/nathievzm/lumi.git\ncd lumi\n```\n\n### Install dependencies\n\n```bash\nbun install\n```\n\n### Available Scripts\n\n- `bun start`: Run the application.\n- `bun dev`: Start with hot reloading.\n- `bun lint`: Check for code quality issues using `oxlint`.\n- `bun lint:fix`: Fix linting issues automatically.\n- `bun fmt`: Format the codebase using `oxfmt`.\n- `bun fmt:check`: Check for formatting issues.\n- `bun changelog`: Update the changelog.\n- `bun release`: Release a new version with `bumpp` and update the changelog.\n- `bun prepare`: Install git hooks with `lefthook`.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathievzm%2Flumi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathievzm%2Flumi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathievzm%2Flumi/lists"}