A professional, browser-based invoice generation web application built with Angular 21+ and Tailwind CSS. InvoiceEase enables business owners, office workers, and freelancers to create professional invoices in under 60 seconds.
InvoiceEase provides a streamlined invoicing experience with real-time preview, bilingual support (Indonesian/English), dual currency support (IDR/USD), and one-click PDF generation. The application runs entirely in the browser with no backend required, making it simple to deploy and use.
- Real-time invoice form validation and calculations
- Live invoice preview with instant updates
- Bilingual support (Indonesian & English) with instant language switching
- Dual currency formatting (IDR & USD)
- Client-side PDF generation with professional design
- Mobile-responsive design for on-the-go invoicing
- Digital signature support
- Modern, intuitive user interface
- Frontend Framework: Angular 21+ (standalone components, signals)
- Styling: Tailwind CSS v3
- PDF Generation: pdfmake
- Date Utilities: date-fns
- Language: TypeScript
- Build Tool: Angular CLI
Before you begin, ensure you have the following installed:
- Node.js 18 or higher
- npm (comes with Node.js) or yarn
You can check your versions by running:
node --version
npm --version- Clone the repository or navigate to the project directory
- Install dependencies:
npm installThis will download all required packages defined in package.json.
Start the development server:
npm startAlternatively, you can use the Angular CLI directly:
ng serveThe application will be available at http://localhost:4200. The server will automatically reload when you make changes to any source file.
Create an optimized production build:
npm run buildBuild artifacts will be stored in the dist/ directory. You can deploy this folder to any static hosting service (Netlify, Vercel, GitHub Pages, etc.).
src/app/
├── components/ # Angular components
│ ├── invoice-form/ # Main invoice input form
│ ├── invoice-preview/ # Real-time preview component
│ └── toast/ # Notification component
├── services/ # Business logic and utilities
│ ├── invoice.service.ts # Invoice state management
│ ├── pdf.service.ts # PDF generation logic
│ ├── i18n.service.ts # Internationalization
│ ├── validation.service.ts # Form validation
│ ├── calculation.service.ts # Invoice calculations
│ └── locale-persistence.service.ts # Language persistence
├── models/ # TypeScript interfaces and types
│ ├── invoice.model.ts # Invoice data structures
│ └── validation.types.ts # Validation types
├── pipes/ # Custom pipes
│ └── translate.pipe.ts # Translation pipe
├── i18n/ # Translation files
│ ├── id.json # Indonesian translations
│ └── en.json # English translations
├── app.config.ts # Application configuration
├── app.routes.ts # Route definitions
└── app.component.ts # Root component
- Fill in your business information (company name, address, contact details)
- Add client information
- Select invoice date and due date
- Add line items with descriptions, quantities, and rates
- The preview will update in real-time as you type
- Choose your preferred language and currency
- Click the download button to generate the PDF invoice
Use the language selector in the header to switch between Indonesian and English. Your preference will be saved for future visits.
The application supports both Indonesian Rupiah (IDR) and US Dollars (USD). Switch between currencies using the currency selector in the header.
The project follows Angular best practices and uses:
- Standalone components for better tree-shaking
- Signals for reactive state management
- TypeScript for type safety
- Tailwind CSS for utility-first styling
Run unit tests:
npm testnpm start- Start development servernpm run build- Build for productionnpm run watch- Build in watch mode for developmentnpm test- Run unit tests
- Chrome (recommended)
- Firefox
- Safari
- Edge
MIT License - feel free to use this project for personal or commercial purposes.
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
This project is production-ready and actively maintained. All core features have been implemented and tested.