Invoice is a modern CLI tool designed to help freelancers manage their projects with speed and efficiency, without ever leaving the terminal. Track your projects, manage payments, and never miss a deadline again.
- Project Management: Create, list, and manage all your projects.
- Detailed View: Get detailed information for a specific project by its ID or name.
- Status Tracking: Mark projects as
startedorcompletedto keep track of your progress. - Powerful Filtering: Filter your projects to see only what's relevant at the moment (e.g., all started projects).
- Data Export: Export your project data to
CSVfor reporting orPDFfor invoicing. - Interactive UI: User-friendly prompts for creating and updating projects.
- Customizable: Setup your own configuration for the tool.
Currently, Invoice can be installed by cloning the repository and running the installation script.
# Clone the repository
git clone https://github.com/Henriquehnnm/invoice.git
# Navigate to the project directory
cd invoice
# Install dependencies (requires Bun)
bun install
# Build the executable and install it
bun run installMake sure you have ~/.local/bin in your PATH.
Invoice provides a set of commands to manage your projects seamlessly.
Start the initial configuration for Invoice.
Create a new project through an interactive prompt.
List all your projects in a clean table format.
--json: Output the project list in JSON format.
Get a specific project's details.
-i, --id <number>: Find project by ID.-n, --name <name>: Find project by name.--json: Output the project details in JSON format.
Mark a project as started.
-i, --id <number>: The ID of the project to start.
Mark a project as completed.
-i, --id <number>: The ID of the project to complete.
Edit project information by id
-i, --id <number>: The ID of the project to edit.
Filter projects based on their status.
-s, --started: Show all started projects.-c, --completed: Show all completed projects.--json: Output the filtered projects in JSON format.
Delete a project.
-i, --id <number>: The ID of the project to delete.
Generates an invoice for a project.
-i, --id <number>: The ID of the project to generate the invoice for.[path]: Optional output path for the PDF file (defaults toinvoice.pdf).
Export projects to a CSV file.
-i, --id <number>: Export a single project by ID.-a, --all: Export all projects.[path]: Optional output path for the CSV file (defaults tooutput.csv).
- TypeScript - Main language
- Bun - JavaScript toolkit
- Commander.js - CLI framework
- @clack/prompts - Interactive prompts
- cli-table3 - Table rendering
- PDFKit - PDF generation library
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is licensed under the MIT License - see the LICENSE file for details.
