A modern, responsive invoice builder built with React + Vite + Tailwind CSS. Create line items, configure tax/discount, edit billing details, and switch into a polished invoice preview in real time.
- Interactive invoice editor with editable line items (service, quantity, unit price)
- Auto-calculated totals including subtotal, discount, tax, and grand total
- Smart item ID generation that fills ID gaps when rows are removed
- Billing profiles for both sender (“From”) and recipient (“Bill To”) sections
- Professional invoice preview mode with printable-looking layout
- Modern UI using utility-first styling and gradient-based design accents
- Frontend: React 19
- Build tool: Vite 7
- Styling: Tailwind CSS 4
- Icons: react-icons
- Linting: ESLint 9
Live URL: Invoice Generator
Make sure you have one of the following installed:
- Node.js 18+ (recommended), or
- Bun (lockfile included)
Using npm:
npm installUsing Bun:
bun installnpm run devThen open the local URL shown in your terminal (usually http://localhost:5173).
npm run dev— Start local dev server with HMRnpm run build— Create production buildnpm run preview— Preview production build locallynpm run lint— Run ESLint checks
dynamic-invoice-generator/
├── public/
├── src/
│ ├── components/
│ │ ├── ActionButtons.jsx
│ │ ├── Footer.jsx
│ │ ├── Header.jsx
│ │ ├── InvoiceDetails.jsx
│ │ ├── InvoicePreview.jsx
│ │ ├── InvoiceSummary.jsx
│ │ └── LineItemRow.jsx
│ ├── App.jsx
│ ├── App.css
│ ├── index.css
│ └── main.jsx
├── index.html
├── package.json
└── vite.config.js
- Enter sender and client details.
- Add, update, or remove line items.
- Set discount and tax rate.
- Review computed totals in the summary panel.
- Toggle Preview for a clean, invoice-style layout.
- Export to PDF
- Persistent drafts (local storage / backend)
- Invoice number sequencing
- Multi-currency and locale formatting
- Authentication + client management
- Unit/integration tests
- LinkedIn: Dadir Dev.
- Twitter/X: @Dadir_Dev
- Built with React, Vite, and Tailwind CSS.
- Icons powered by react-icons.
- Thanks to the open-source community for the tooling that made this project possible.
Contributions are welcome.
- Fork the repository
- Create a feature branch
- Make your changes
- Run lint/build checks
- Open a pull request
This project is open source and available under the MIT License.


