A professional desktop invoice generation system built with Tauri, React, and Rust. Designed specifically for laundry and dry cleaning businesses with full GST compliance for the Indian market.
- π¨οΈ Multiple Print Formats: A5, A4, and 80mm Thermal printer support
- π° GST Compliance: Automatic SGST, CGST, and IGST calculations with HSN codes
- π HTML Invoice Generation: High-quality HTML invoices with auto-print browser integration
- π’ Auto Numbering: Sequential invoice numbering with customizable format
- π Complete Date Tracking: Order, pickup, delivery, and due date management
- π± Currency in Words: Automatic amount-to-words conversion
- π Comprehensive Profiles: Complete customer information with notes
- π Contact Management: Phone, email, and address with validation
- π Customer Analytics: Order history, spending patterns, and loyalty tracking
- π Smart Search: Fast customer lookup with autocomplete
- π Customer Stats: Total orders, spending, and last order tracking
- π’ Store Profiles: Manage multiple business locations
- π Location-based Operations: Store-specific invoicing and reporting
- π Individual Analytics: Location-wise performance tracking
- βοΈ Custom Settings: Store-specific configurations and branding
- πͺ Store Status Management: Active/inactive store controls
- π·οΈ Comprehensive Catalog: Detailed service listings with categories
- πΈ Flexible Pricing: Weight-based, area-based, and quantity-based pricing
- π― Service Variants: Multiple options per service (Express, Premium, etc.)
- π¦ Add-on Services: Additional services with separate pricing
- π Multiple Units: kg, sqft, pieces, and custom units
- π Service Analytics: Popular services and revenue tracking
- πΉ Sales Reports: Revenue tracking with date ranges and filters
- π GST Reports: Tax summary reports for compliance
- π€ Customer Insights: Top customers and behavior analysis
- π Express Delivery Tracking: Premium service monitoring
- π Service Performance: Most popular and profitable services
- π° Payment Analysis: Payment method and outstanding tracking
- π Local Storage: SQLite database for complete data security
- πΎ Backup & Restore: Full database backup with restore functionality
- π Data Export: Export to CSV, PDF, and other formats
- π Data Validation: Input validation and data integrity checks
- π± Offline Operation: Full functionality without internet dependency
Component | Minimum | Recommended |
---|---|---|
Operating System | Windows 10, macOS 10.15, Ubuntu 18.04 | Windows 11, macOS 12+, Ubuntu 20.04+ |
RAM | 4 GB | 8 GB+ |
Storage | 200 MB | 1 GB+ |
Node.js | 18.0.0 | 20.x LTS |
Rust | 1.70.0 | Latest stable |
Before installation, ensure you have:
- Node.js 18+ - Download here
- Rust 1.70+ - Install via rustup
- Git - Download here
Windows:
- Visual Studio Build Tools or Visual Studio 2019/2022
- WebView2 Runtime (usually pre-installed on Windows 11)
macOS:
- Xcode Command Line Tools:
xcode-select --install
Linux (Ubuntu/Debian):
sudo apt update
sudo apt install libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
-
Clone the repository
git clone https://github.com/yourusername/uclean-invoice-system.git cd uclean-invoice-system
-
Install dependencies
# Using npm (recommended) npm install # Or using pnpm pnpm install # Or using yarn yarn install
-
Start development server
npm run dev
The application will automatically open in a desktop window. The first run may take a few minutes to compile the Rust backend.
uclean/
βββ src/ # React Frontend
β βββ components/ # Reusable UI components
β β βββ ui/ # Base UI components
β β βββ forms/ # Form components
β β βββ modals/ # Modal dialogs
β βββ contexts/ # React contexts
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions
β βββ types/ # TypeScript type definitions
β βββ styles/ # CSS and Tailwind styles
βββ src-tauri/ # Rust Backend
β βββ src/
β β βββ database/ # Database models and migrations
β β β βββ mod.rs # Database manager
β β β βββ schema.sql # Database schema
β β β βββ seed.sql # Initial data
β β βββ handlers/ # Tauri command handlers
β β β βββ customer_handler.rs
β β β βββ invoice_handler.rs
β β β βββ service_handler.rs
β β β βββ store_handler.rs
β β β βββ report_handler.rs
β β β βββ pricing_handler.rs
β β β βββ html_handler.rs
β β βββ models/ # Data models and types
β β βββ services/ # Business logic
β β β βββ pricing_engine.rs
β β β βββ html_generator.rs
β β β βββ template_engine.rs
β β βββ utils/ # Helper functions
β β βββ main.rs # Application entry point
β βββ icons/ # Application icons
β βββ build.rs # Build script
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
βββ dist/ # Production build output
βββ public/ # Static assets
βββ tests/ # Test suites
# Development
npm run dev # Start development server with hot reload
npm run build # Build for production
npm run preview # Preview production build
# Testing
npm test # Run unit tests
npm run test:watch # Run tests in watch mode
npm run test:e2e # Run end-to-end tests
npm run test:coverage # Generate test coverage report
# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues automatically
npm run format # Format code with Prettier
npm run type-check # TypeScript type checking
# Rust Backend
cd src-tauri
cargo check # Check Rust code
cargo test # Run Rust tests
cargo build # Build Rust backend
cargo clean # Clean build artifacts
- React 18: Modern React with concurrent features and hooks
- TypeScript: Full type safety and better development experience
- Tailwind CSS: Utility-first CSS framework for rapid UI development
- React Hook Form: Performant forms with validation
- Zod: Schema validation and type inference
- React Router: Client-side routing
- Lucide React: Beautiful icon library
- React Hot Toast: Elegant notifications
- Rust: High-performance, memory-safe systems programming
- Tauri: Secure, fast desktop application framework
- SQLx: Async SQL toolkit with compile-time checked queries
- SQLite: Lightweight, serverless database
- Tokio: Async runtime for Rust
- Serde: Serialization/deserialization framework
- Chrono: Date and time handling
- Anyhow: Error handling
- Tera: Template engine for HTML generation
- Vite: Fast build tool and development server
- Tauri CLI: Desktop application bundling
- ESLint: Code linting and quality checks
- Prettier: Code formatting
- Jest: Unit testing framework
- Playwright: End-to-end testing
The system uses SQLite with the following main entities:
customers
: Customer information, contact details, and preferencesstores
: Business locations with settings and configurationsservices
: Service catalog with pricing and categoriesservice_variants
: Service variations (Express, Premium, etc.)service_addons
: Additional services and add-onsinvoices
: Invoice headers with customer and store informationinvoice_items
: Invoice line items with services and pricinginvoice_item_addons
: Add-on services for invoice items
- Referential Integrity: Foreign key constraints ensure data consistency
- Audit Trail: Created and updated timestamps on all records
- Soft Deletes: Important records are marked inactive instead of deleted
- Flexible Pricing: Support for quantity, weight, and area-based pricing
- GST Compliance: Built-in tax calculation and tracking
-
Configure Your Store
- Navigate to Settings β Store Management
- Add your business details, GST information, and branding
- Set up default tax rates and invoice preferences
-
Create Service Catalog
- Go to Services β Manage Services
- Add your cleaning services with appropriate pricing
- Configure service variants and add-ons
- Set GST rates and HSN codes for compliance
-
Add Customer Information
- Use the Customer Management section
- Import existing customer data or add manually
- Set up customer preferences and notes
-
New Invoice Workflow
- Click "New Invoice" from the dashboard
- Select customer (or create new)
- Choose services and quantities
- Review pricing and tax calculations
- Generate and print invoice
-
Invoice Customization
- Choose print format (A5, A4, or Thermal)
- Add custom notes and terms
- Apply discounts or express charges
- Set pickup and delivery dates
- HTML invoices open automatically in browser with print dialog
- Sales Dashboard: Overview of daily, weekly, and monthly performance
- Customer Reports: Top customers, order frequency, and spending patterns
- Service Analytics: Most popular services and revenue by category
- GST Reports: Tax collection summary for compliance filing
- Payment Tracking: Outstanding amounts and payment method analysis
{
"business": {
"name": "Your Business Name",
"address": "Complete Business Address",
"phone": "+91-XXXXXXXXXX",
"email": "business@example.com",
"gst_number": "22AAAAA0000A1Z5",
"website": "https://yourbusiness.com"
},
"invoice": {
"prefix": "INV",
"starting_number": 1001,
"date_format": "DD/MM/YYYY",
"currency": "INR",
"decimal_places": 2
},
"print": {
"default_format": "A5",
"auto_print": false,
"copies": 1
}
}
The system supports Indian GST requirements:
- SGST + CGST: Intra-state transactions
- IGST: Inter-state transactions
- HSN Codes: Service classification codes
- Tax Rates: 5%, 12%, 18%, 28% standard rates
- Reverse Charge: B2B transaction support
npm run build
# Windows (from any platform)
npm run build -- --target x86_64-pc-windows-msvc
# macOS (from macOS)
npm run build -- --target x86_64-apple-darwin
npm run build -- --target aarch64-apple-darwin
# Linux (from Linux)
npm run build -- --target x86_64-unknown-linux-gnu
The built application will be available in src-tauri/target/release/bundle/
.
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage
npm run test:e2e # Run Playwright tests
cd src-tauri
cargo test # Run Rust tests
cargo test -- --nocapture # With output
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Follow the coding standards
- Add tests for new features
- Update documentation
- Commit your changes
git commit -m 'Add amazing feature'
- Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request
- TypeScript: Strict mode enabled, full type coverage
- Rust: Follow standard Rust conventions and clippy recommendations
- Testing: Minimum 80% code coverage for new features
- Documentation: Update docs for any API changes
This project is licensed under the MIT License - see the LICENSE file for details.
Build Failures:
- Ensure all prerequisites are installed
- Clear node_modules and reinstall:
rm -rf node_modules && npm install
- Clear Rust cache:
cd src-tauri && cargo clean
Database Issues:
- Delete database.sqlite to reset to default schema
- Check file permissions in the application data directory
Print Issues:
- Ensure Chrome browser is installed and set as default
- Check browser print settings and page setup
- Try different print formats (A4, A5, Thermal)
- Verify HTML files are opening correctly in browser
Performance Issues:
- Check available disk space (SQLite database grows over time)
- Consider archiving old invoices
- Monitor system resources during HTML generation
- Clear browser cache if print previews are slow
For more detailed troubleshooting, see docs/DEVELOPMENT_SETUP.md and docs/BUILD_GUIDE.md.
- π§ Email: support@uclean.com
- π Issues: GitHub Issues
- π Documentation: Project Wiki
- π¬ Discussions: GitHub Discussions
- Built with β€οΈ using Tauri and React
- Icons by Lucide
- UI components inspired by shadcn/ui
- Special thanks to the open-source community
Made with π by the UCLEAN Team