A comprehensive, production-ready invoice generation system built for freelancers and small businesses. Create, manage, and send professional invoices with ease.
- Multi-user Authentication - Secure login/signup system with Firebase Auth
- Client Management - Add, edit, and manage client information
- Invoice Creation - Dynamic invoice forms with itemized billing
- PDF Generation - Professional PDF invoices using pdfmake
- Email Integration - Send invoices directly via email
- Real-time Data - Live syncing with Firebase Firestore
- Tax Calculations - Automatic GST/tax calculations
- Payment Tracking - Track invoice status (Draft, Sent, Paid, Overdue)
- Dashboard Analytics - Revenue tracking and invoice statistics
- Responsive Design - Works perfectly on all devices
- Search & Filtering - Easy invoice and client management
- Business Branding - Custom business information and settings
- Data Export - Export functionality for invoices and client data
- Secure Storage - Files stored in Firebase Storage with proper security rules
- Frontend: React 18 + TypeScript + Tailwind CSS
- Backend: Firebase (Auth, Firestore, Storage)
- PDF Generation: pdfmake
- State Management: React Context + Hooks
- Form Handling: React Hook Form + Yup validation
- Icons: Lucide React
- Notifications: React Hot Toast
- Date Handling: date-fns
- Build Tool: Vite
The application follows a modular, scalable architecture:
src/
βββ components/ # Reusable UI components
β βββ auth/ # Authentication components
β βββ common/ # Shared components
β βββ dashboard/ # Dashboard components
β βββ invoices/ # Invoice management
β βββ clients/ # Client management
β βββ layout/ # Layout components
β βββ settings/ # Settings components
βββ contexts/ # React contexts
βββ services/ # API and service layers
βββ types/ # TypeScript type definitions
βββ config/ # Configuration files
βββ utils/ # Utility functions
- Node.js 18+ and npm
- Firebase project with Firestore, Authentication, and Storage enabled
git clone https://github.com/pyapril15/guvi-hcl-internship-project-3.git
cd guvi-hcl-internship-project-3npm install- Go to Firebase Console
- Create a new project
- Enable Authentication, Firestore Database, and Storage
- Go to Authentication > Sign-in method
- Enable Email/Password authentication
- Disable email verification (optional)
- Go to Firestore Database
- Create database in production mode
- Apply the security rules from
firestore.rules
- Go to Storage
- Create a bucket
- Create a folder named "Automated Invoice Generator"
- Apply the security rules from
storage.rules
- Go to Project Settings
- Add a web app
- Copy the configuration object
- Update
src/config/firebase.tswith your config
The Firebase configuration is directly in the code. For production, consider using environment variables:
# .env.local
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_idnpm run devnpm run buildThe application uses comprehensive Firestore security rules to ensure data isolation:
- Users can only access their own data
- Client documents are user-scoped
- Invoice documents are user-scoped
- All operations require authentication
Storage rules ensure file security:
- Users can only access their own invoice PDFs
- Profile images and logos have appropriate read/write permissions
- All uploads require authentication
- Create Account - Sign up with email and password
- Complete Profile - Add business information in Settings
- Add Clients - Create client profiles with contact details
- Create Invoice - Generate professional invoices with itemized billing
- Send & Track - Email invoices and track payment status
- Revenue overview and statistics
- Recent invoice activity
- Pending and overdue alerts
- Quick access to key functions
- Create invoices with multiple line items
- Automatic tax calculations
- PDF generation and download
- Email integration with pre-filled templates
- Status tracking (Draft β Sent β Paid)
- Complete client database
- Contact information and billing addresses
- GSTIN support for Indian businesses
- Easy client selection during invoice creation
- Business profile customization
- Tax configuration
- Account management
- Data export options
# Run unit tests
npm run test
# Run e2e tests
npm run test:e2e
# Run linting
npm run lint- Code Splitting - Dynamic imports for route-based splitting
- Lazy Loading - Components loaded on demand
- Image Optimization - Compressed and properly sized images
- Caching - Firebase caching for improved performance
- Bundle Analysis - Regular bundle size monitoring
User Action β Component β Service Layer β Firebase β Real-time Updates
- User Interaction - User performs action in UI
- Component Handler - Component processes the action
- Service Call - Service layer handles Firebase operations
- Database Update - Firestore updates data
- Real-time Sync - UI automatically reflects changes
- Modular component structure
- Separation of concerns
- TypeScript for type safety
- Consistent naming conventions
- Client-side validation
- Server-side security rules
- Data sanitization
- Secure authentication flow
- Optimized re-renders
- Efficient data fetching
- Proper error boundaries
- Loading states
- Responsive design
- Accessible components
- Intuitive navigation
- Clear feedback messages
- Fork the repository
- Create feature branch:
git checkout -b feature/AmazingFeature - Commit changes:
git commit -m 'Add AmazingFeature' - Push to branch:
git push origin feature/AmazingFeature - Open Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Email: support@Invoice Generator.com
- Documentation: [docs.Invoice Generator.com](https://docs.Invoice Generator.com)
- Multi-currency support
- Recurring invoices
- Payment gateway integration
- Advanced reporting
- Mobile app
- API for third-party integrations
- Invoice templates
- Expense tracking
- Time tracking integration
- Multi-language support
- Update Firebase configuration
- Set up proper error monitoring
- Configure analytics
- Test all user flows
- Optimize images and assets
- Set up backup strategies
- Configure proper CORS settings
- Test email functionality
- Verify PDF generation
- Check mobile responsiveness
- Monitor performance metrics
- Set up user feedback collection
- Monitor error rates
- Regular security audits
- Backup database regularly
- Update dependencies
- Monitor costs and usage
Built with β€οΈ by PyApril15 for the GUVI HCL Internship Project.
- Modern login/signup with gradient background
- Form validation and error handling
- Responsive design
- Revenue analytics and statistics
- Recent activity overview
- Quick action buttons
- Status indicators
- Professional invoice creation
- Real-time calculations
- PDF preview and download
- Email integration
- Comprehensive client database
- Contact information management
- Easy search and filtering
Invoice Generator - Making professional invoicing simple and efficient for everyone.

