A professional GST-compliant invoice generation software built with React, TypeScript, and Vite. Generates PDF invoices with proper tax calculations, company details, and banking information.
- GST Compliance: Automatically calculates CGST/SGST (same state) or IGST (inter-state) based on company locations
- PDF Generation: Download invoices as professional PDFs
- Inventory Management: Manage and add items to invoices
- Customer Lookup: Search customers by GST number
- Transport Details: Track transportation mode and vehicle numbers
- Payment Terms: Set custom payment terms and due dates
- Professional Formatting: Bank details, terms & conditions, and company information
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS + Shadcn UI Components
- PDF Generation: @react-pdf/renderer
- Build Tool: Vite
- Router: React Router v6
- Form Handling: React Hook Form + Zod
- State Management: React Query
- Node.js 16+ (or Bun 1.0+)
- npm or Bun package manager
# Clone the repository
git clone <YOUR_REPO_URL>
cd taxprint-pro-main
# Install dependencies
npm install
# or
bun install
# Start development server
npm run dev
# or
bun run devThe app will be available at http://localhost:8080
- Add Company: Click "Add Company" and enter customer GST number (will auto-populate from mock data)
- Select Items: Browse inventory on the left and click items to add them to invoice
- Adjust Quantities: Update quantities and discounts as needed
- Configure Options: Set payment terms, due dates, transport mode, and add notes
- Generate PDF: Click "Download PDF" to generate and download the invoice
# Build the project
npm run build
# Preview production build locally
npm run preview- Push your code to a GitHub repository
- Go to Netlify
- Click "New site from Git"
- Select your repository
- Build settings should auto-detect:
- Build command:
npm run build - Publish directory:
dist
- Build command:
- Click "Deploy site"
# Install Netlify CLI
npm install -g netlify-cli
# Login to Netlify
netlify login
# Deploy
netlify deploy --prodsrc/
├── components/ # React components
│ ├── ui/ # Shadcn UI components
│ ├── InvoicePdf.tsx # PDF template component
│ ├── InvoiceItems.tsx # Invoice items form
│ ├── InvoiceOptions.tsx # Payment & transport options
│ └── ...
├── pages/ # Page components
│ ├── Index.tsx # Main application page
│ └── NotFound.tsx # 404 page
├── data/ # Mock data & constants
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
└── App.tsx # Main app component
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run test # Run tests once
npm run test:watch # Run tests in watch mode- vite.config.ts: Vite build configuration
- tsconfig.json: TypeScript configuration
- tailwind.config.ts: Tailwind CSS customization
- netlify.toml: Netlify deployment configuration
- Font rendering now uses system fonts (Helvetica) for better compatibility
- Removed external Google Fonts dependency to avoid CORS issues in production
- All PDF generation is client-side for instant downloads
Currently, no environment variables are required. All configuration is in source code.
To add environment variables:
- Create
.env.localfile - Add variables with
VITE_prefix (e.g.,VITE_API_URL) - Access in code via
import.meta.env.VITE_API_URL
- Check browser console for errors
- Ensure all required fields are filled
- Try clearing browser cache and reload
- Delete
node_modulesanddistfolders - Run
npm installagain - Check Node.js version compatibility
- Clear build cache in Netlify UI
- Check build logs in Netlify dashboard
- Ensure
distfolder is published
MIT
For issues or questions, please check the browser console for error messages and refer to the troubleshooting section above.
- Edit files directly within the Codespace and commit and push your changes once you're done.
This project is built with:
- Vite
- TypeScript
- React
- shadcn-ui
- Tailwind CSS
Simply open Lovable and click on Share -> Publish.
Yes, you can!
To connect a domain, navigate to Project > Settings > Domains and click Connect Domain.
Read more here: Setting up a custom domain