A modern, responsive, and feature-rich invoice generation application built with Next.js 15, React 19, and TypeScript. Create professional invoices with ease, customize their appearance, and export them as PDF.
- Business Details: Store and manage company information including name, address, contact details, logo, and tax information
- Client Management: Manage customer details with billing and shipping addresses
- GST/Tax Support: Full support for Indian GST (CGST/SGST) and international tax systems
- Multi-Currency: Support for USD, EUR, GBP, INR with automatic currency symbols
- Dynamic Item Management: Add, edit, and remove invoice items with real-time calculations
- HSN/SAC Codes: Support for Indian tax classification codes
- Tax Calculations: Automatic tax calculations with breakdown for different tax rates
- Notes & Terms: Add custom notes and authorized signatory details
- Draft Management: Save and manage invoice drafts
- Real-time Preview: Live preview of invoice as you create it
- Appearance Customization: Modify invoice layout and styling
- Mobile-Responsive Design: Fully responsive design optimized for all devices
- Print-Friendly: Optimized layout for printing
- Print Support: Direct printing with optimized print styles
- Multiple Formats: Various export options for different use cases
- Responsive Design: Fully mobile-responsive interface
- Touch-Friendly: Optimized for touch interactions
- Mobile Customization Panel: Slide-out panel for mobile devices
- Accessible Actions: Easy access to all features on mobile devices
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS 4 with custom animations
- UI Components: Radix UI primitives with custom components
- Icons: Lucide React
- Redux Toolkit: For global state management
- React Redux: React bindings for Redux
- ESLint: Code linting with Next.js configuration
- TypeScript: Static type checking
- Tailwind CSS: Utility-first CSS framework
- Node.js 18.17 or later
- npm, yarn, or pnpm package manager
-
Clone the repository
git clone https://github.com/yourusername/openinvo.git cd openinvo -
Install dependencies
npm install # or yarn install # or pnpm install
-
Run the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser Navigate to http://localhost:3000 to see the application.
npm run build
npm startopeninvo/
βββ app/ # Next.js 15 App Router
β βββ create/ # Invoice creation page
β βββ preview/ # Invoice preview page
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ providers.tsx # Redux provider wrapper
βββ components/ # React components
β βββ invoiceComponents/ # Invoice creation components
β β βββ actionBtn.tsx # Action buttons component
β β βββ authorizedSignatory.tsx # Signatory component
β β βββ businessDetails.tsx # Business details form
β β βββ clientDetails.tsx # Client details form
β β βββ InvoDetails.tsx # Invoice header details
β β βββ invoiceItems.tsx # Invoice items management
β β βββ Notes.tsx # Notes and terms component
β βββ previewComponents/ # Invoice preview components
β β βββ actBtn.tsx # Preview action buttons
β β βββ customization.tsx # Appearance customization
β β βββ invoiceRef.tsx # Invoice template component
β βββ ui/ # Reusable UI components
β β βββ button.tsx # Button component
β β βββ card.tsx # Card component
β β βββ input.tsx # Input component
β β βββ ... # Other UI components
β βββ commonHeader.tsx # Common page header
β βββ ctaSection.tsx # Call-to-action section
β βββ featureGrid.tsx # Features grid component
β βββ footer.tsx # Footer component
β βββ header.tsx # Main header component
βββ lib/ # Utility functions
β βββ utils.ts # Common utilities
βββ store/ # Redux store
β βββ invoiceSlice.ts # Invoice state management
β βββ store.ts # Store configuration
βββ public/ # Static assets
βββ ...config files # Configuration files
- Navigate to Create Page: Go to
/createor click "Create Invoice" from the home page - Fill Invoice Details: Add invoice number, date, and due date
- Add Business Information: Enter your company details, GST information, and upload logo
- Add Client Information: Enter customer details and shipping information if different
- Add Invoice Items: Add products/services with quantities, prices, and tax rates
- Add Notes: Include any additional terms, conditions, or notes
- Add Signatory: Include authorized signatory information
- Generate Invoice: Click "Generate Invoice" to proceed to preview
- Review Invoice: Check all details in the preview
- Customize Appearance: Use the customization panel to modify styling
- Mobile View: On mobile, tap "Customize Appearance" to access the customization panel
- Export Options: Choose from Print, Save as PDF, or Edit Invoice
- Responsive Design: All features are accessible on mobile devices
- Touch-Friendly: Optimized for touch interactions
- Slide-out Panel: Customization panel slides in from the side on mobile
- Accessible Actions: Action buttons are positioned for easy thumb access
Create a .env.local file in the root directory:
# Add any environment variables here
NEXT_PUBLIC_APP_URL=http://localhost:3000The application supports various customization options:
- Colors: Modify the color scheme in
tailwind.config.js - Typography: Customize fonts and text styles
- Layout: Adjust spacing and layout configurations
- Components: Extend or modify existing components
interface InvoiceState {
invoiceNumber: string;
invoiceDate: string;
dueDate: string;
items: InvoiceItem[];
businessDetails: BusinessDetails;
clientDetails: ClientDetails;
notes: string;
isIndia: boolean;
currency: string;
authorizedSignatory: {
name: string;
designation: string;
signature: string | null;
};
}updateInvoiceDetails: Update invoice header informationupdateBusinessDetails: Update business informationupdateClientDetails: Update client informationaddItem: Add new invoice itemupdateItem: Update existing invoice itemremoveItem: Remove invoice itemupdateNotes: Update invoice notesupdateSignatory: Update authorized signatory
The application uses Tailwind CSS for styling with custom components and animations:
- Design System: Consistent color palette and typography
- Responsive Design: Mobile-first approach with breakpoint-specific styles
- Animations: Smooth transitions and micro-interactions
- Print Styles: Optimized styles for printing and PDF generation
- Hydration Errors: Ensure all table structures use proper
<thead>,<tbody>, and<tfoot>elements - PDF Generation: Check for console errors if PDF generation fails
- Mobile Responsiveness: Test on various devices and screen sizes
- State Persistence: Redux state resets on page refresh (by design)
- Images are optimized using Next.js Image component
- Code splitting with dynamic imports where applicable
- Tailwind CSS purging removes unused styles in production
- Components are memoized where appropriate
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use ESLint for code consistency
- Test on multiple devices and browsers
- Ensure accessibility standards are met
- Write clear, descriptive commit messages
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Tailwind CSS for the utility-first CSS framework
- Radix UI for accessible UI primitives
- Redux Toolkit for state management
- Lucide React for beautiful icons
If you have any questions or need help getting started:
- Create an issue on GitHub
- Check the documentation
- Review existing issues for solutions
Made with β€οΈ by JAINCK
Create professional invoices with ease and style.