{"id":34961737,"url":"https://github.com/usrrname/invoicer","last_synced_at":"2026-05-21T08:35:07.271Z","repository":{"id":330347320,"uuid":"1122378962","full_name":"usrrname/invoicer","owner":"usrrname","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-16T22:11:04.000Z","size":33276,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-17T04:54:53.727Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/usrrname.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-12-24T15:50:12.000Z","updated_at":"2026-02-16T22:11:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/usrrname/invoicer","commit_stats":null,"previous_names":["usrrname/invoicer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/usrrname/invoicer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usrrname%2Finvoicer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usrrname%2Finvoicer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usrrname%2Finvoicer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usrrname%2Finvoicer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/usrrname","download_url":"https://codeload.github.com/usrrname/invoicer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usrrname%2Finvoicer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33294031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T02:57:32.698Z","status":"ssl_error","status_checked_at":"2026-05-21T02:57:31.990Z","response_time":62,"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":[],"created_at":"2025-12-26T22:44:44.794Z","updated_at":"2026-05-21T08:35:07.259Z","avatar_url":"https://github.com/usrrname.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Invoicer\n\nA CLI tool that converts markdown invoice files into PDF documents.\n\n## Usage\n\nRun the CLI tool with an input markdown file and output PDF filename:\n\n```bash\nnode src/cli.mjs \u003cinput-markdown-file\u003e \u003coutput-pdf-file\u003e\n```\n\n### Example\n\n```bash\nnode src/cli.mjs invoice-template.md invoice.pdf\n```\n\nThe generated PDF will be saved in `records/YYYY/MM/` directory structure.\n\n## Input File Format\n\nThe markdown input file should contain invoice information in the following format:\n\n```markdown\n# Invoice\n\nInvoice ID: INV-2025-001\nDate: 2025-12-25\n\n## Payer\n\n- Name: Company Name\n- Address: 123 Main St, City, State 12345\n- Telephone: (555) 123-4567\n\n## Payee\n\n- Name: Your Name\n- Email: your@email.com\n- Address: 456 Business Ave, City, State 67890\n- Telephone: (555) 987-6543\n\n## Line Items\n\n| Description          | Date                    | Hours  | Rate  | Amount   |\n| -------------------- | ----------------------- | ------ | ----- | -------- |\n| Web Development      | 2024-01-15              | 8      | 150   | 1200.00  |\n| Design Services      | 2024-01-16              | 4      | 200   | 800.00   |\n\n## Expenses\n\n| Date       | Name | Description           | Amount |\n| ---------- | ---- | --------------------- | ------ |\n| 2024-01-10 | Uber | Transport to office   | 50.00  |\n| 2024-01-15 | Taxi | Transport from office | 30.00  |\n```\n\n### Supported Fields\n\n- **Invoice ID**: Unique identifier for the invoice (optional)\n- **Date**: Invoice date (optional, defaults to current date)\n- **Payer Section**: Contains payer information as list items\n  - `Name`: Name of the invoice recipient\n  - `Address`: Address of the recipient\n  - `Telephone`: Contact phone number\n- **Payee Section**: Contains payee information as list items\n  - `Name`: Name of the person/company issuing the invoice\n  - `Email`: Email address of the invoicer\n  - `Address`: Address of the invoicer\n  - `Telephone`: Contact phone number\n- **Line Items Table**: Markdown table with columns: `Description, Date, Hours, Amount` (or optional `Description, Date, Hours, Rate, Amount` for per-line hourly rates)\n- **Expenses Table**: Markdown table with columns: Date, Name, Description, Amount\n- **Total**: Calculated automatically from line items and expenses\n\n## Project Structure\n\n```\ninvoicer/\n├── src/\n│   ├── cli.mjs              # Command-line interface\n│   ├── markdownParser.mjs   # Markdown to Invoice parser\n│   ├── pdfGenerator.mjs     # Renders data to PDF (HTML+CSS via Puppeteer)\n│   ├── invoiceTemplate.mjs   # HTML structure and data only (no styling)\n│   ├── spinner.mjs           # Loading spinner component\n│   └── styles.css            # All PDF styling (CSS only)\n├── test/                    # Test files\n├── records/                 # Generated PDF output directory\n│   └── YYYY/MM/            # Organized by year and month\n├── invoice-template.md      # Example invoice template\n├── package.json\n├── tsconfig.json           # TypeScript config for type checking\n└── README.md\n```\n\n## Dependencies\n\n- **puppeteer**: Renders HTML+CSS to PDF (styling is in `src/styles.css` only)\n- **dotenv**: Environment variable management\n\n### Dev Dependencies\n\n- **typescript**: TypeScript compiler for type checking\n- **@types/node**: Node.js type definitions\n\n## Development\n\n### Scripts\n\n- `npm run lint`: Type check the codebase\n- `npm run build`: Compile TypeScript (if applicable)\n- `npm test`: Run tests\n\n### Type Checking\n\nThe project uses TypeScript for type checking (via JSDoc comments). To check types:\n\n```bash\nnpm run lint\n```\n\n## License\n\nISC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusrrname%2Finvoicer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fusrrname%2Finvoicer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusrrname%2Finvoicer/lists"}