{"id":26317242,"url":"https://github.com/alexmarqs/alm-invoices-cli","last_synced_at":"2026-05-06T22:37:19.046Z","repository":{"id":42490009,"uuid":"445894413","full_name":"alexmarqs/alm-invoices-cli","owner":"alexmarqs","description":"🧾 My personal CLI app to manage my invoices via Web Scraping.","archived":false,"fork":false,"pushed_at":"2022-04-03T09:06:13.000Z","size":91,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T13:18:49.638Z","etag":null,"topics":["automation","chalk","cli","executable","headless-browser","inquirerjs","meow","nodejs","pkg","puppeteer","typescript","webscraping"],"latest_commit_sha":null,"homepage":"","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/alexmarqs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-08T18:13:14.000Z","updated_at":"2023-03-07T14:18:31.000Z","dependencies_parsed_at":"2022-09-03T08:44:02.104Z","dependency_job_id":null,"html_url":"https://github.com/alexmarqs/alm-invoices-cli","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexmarqs/alm-invoices-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmarqs%2Falm-invoices-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmarqs%2Falm-invoices-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmarqs%2Falm-invoices-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmarqs%2Falm-invoices-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexmarqs","download_url":"https://codeload.github.com/alexmarqs/alm-invoices-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmarqs%2Falm-invoices-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32715426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","chalk","cli","executable","headless-browser","inquirerjs","meow","nodejs","pkg","puppeteer","typescript","webscraping"],"created_at":"2025-03-15T13:18:51.522Z","updated_at":"2026-05-06T22:37:19.033Z","avatar_url":"https://github.com/alexmarqs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ALM Invoices CLI\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\nMy personal CLI (Command Line Interface) app to manage my invoices via Web Scraping.\n\n\u003e **_WIP (Work in Progress)_:** For now only the list command is fully implemented. The generate command will be finished in the next couple of weeks.\n\n## Motivation\n\nI'm using a SaaS (Software as a Service) to generate invoices in my own company however it doesn't provide/expose an API for developers like me that want to automate tedious tasks! Do I have a solution? Of course, as a developer nothing is impossible! Via Web Scrapping (with a headless browser to perform browser automation) I'm able to interact with the Web Application and perform all the operations.\n\n## Technologies\n\n- Typescript (selected ES2020 as target because I assume Node.js version 14 or higher is being used)\n- Node.js\n- [Puppeteer](https://github.com/puppeteer/puppeteer) (headless browser automation)\n- ESLint + Prettier + Husky\n- Yarn\n- [Pkg](https://github.com/puppeteer/puppeteer) (create executable file)\n- [Meow](https://github.com/sindresorhus/meow) (parse command line arguments + help functionalities) - I could use [Yargs](https://github.com/yargs/yargs), [OCLIF](https://github.com/oclif/oclif), [Commander.js](https://github.com/tj/commander.js/), or other CLI libraries for more complex CLI applications\n- [Inquirer.js](https://github.com/SBoudrias/Inquirer.js/) (to ask questions to the user)\n\nBtw, as I'm talking about CLI apps, there is another cool package that you can use to simplify shell commands executions if needed: [Sheeljs](https://github.com/shelljs/shelljs).\n\n## How to execute the CLI\n\nAs I'm not distributing the CLI to the public / NPM registry, you can install it globally in your machine via Yarn or NPM:\n\n```bash\n  yarn global add .\n  # OR\n  npm install -g .\n```\n\nLet’s say I want to distribute this for only certain persons that don't have a proper Node environment in their machine. For that, I package my CLI as a single executable, using the `pkg` module from Vercel. The binary is available in the `bin/\u003cos\u003e` folder (also available in compressed format). For now, only macOS is supported.\n\n**Requirements**: Set up the following environment variables (please check `.env.example`): `USER_INVOICE`, `INVOICE_URL` and `PWD_INVOICE` in your system.\n\n## Resources\n\nhttps://medium.com/geekculture/building-a-node-js-cli-with-typescript-packaged-and-distributed-via-homebrew-15ba2fadcb81\n\nhttps://kirablog.hashnode.dev/build-a-cli-using-nodejs#heading-adding-logic\n\n## License\n\nMIT License © [alexmarqs](https://github.com/alexmarqs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmarqs%2Falm-invoices-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexmarqs%2Falm-invoices-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmarqs%2Falm-invoices-cli/lists"}