A professional invoice management system built with React 19 and Firebase, featuring customer management, invoice creation, PDF generation, multi-currency support, and business profiles.
π Live Demo: https://flowdesk.tech
- π User Authentication: Secure login and registration with Firebase Auth
- π₯ Customer Management: Add, edit, and manage customer information
- π Invoice Creation: Create professional invoices with line items and calculations
- π Dashboard: Overview of revenue, pending invoices, and recent activity
- π PDF Generation: Download and preview invoices as PDF documents
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- π± Multi-Currency Support: Create invoices in 30+ currencies with proper formatting
- π Business Profiles: Manage multiple businesses under one account
- βοΈ Email in Profiles: Add business email to profiles for professional invoices
- π’ Flexible Invoice Numbers: Always editable invoice numbers with auto-increment option
- π Custom Domain Support: Deployed at flowdesk.tech with CORS support
- π¨ Enhanced UI: Improved currency selectors with symbols and better form layouts
- Build Tool: Vite 6
- Frontend: React 19 (RC), Material-UI 6, React Router DOM 7
- Backend: Firebase 11 (Firestore, Authentication, Hosting)
- PDF Generation: jsPDF with autotable
- Forms: React Hook Form
- Date Handling: date-fns
- Node.js (v18 or higher)
- npm or yarn
- Firebase account
- Git
git clone https://github.com/yourusername/invoice-management.git
cd invoice-managementnpm installCopy the .env.example file to .env and add your Firebase configuration:
cp .env.example .envThen edit .env with your Firebase project values:
VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain_here
VITE_FIREBASE_PROJECT_ID=your_project_id_here
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket_here
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id_here
VITE_FIREBASE_APP_ID=your_app_id_here
VITE_FIREBASE_MEASUREMENT_ID=your_measurement_id_here-
Create a new Firebase project at Firebase Console
-
Enable the following services:
- Authentication (Email/Password)
- Firestore Database
- Hosting
-
Create a web app in your Firebase project and copy the configuration values to your
.envfile -
Update
.firebasercwith your project ID:
{
"projects": {
"default": "your-firebase-project-id"
}
}- Deploy Firestore security rules:
firebase deploy --only firestore:rules- Create composite indexes (if needed):
firebase deploy --only firestore:indexes# Development server with hot module replacement
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewThe application will open at http://localhost:3000
- Build the production version:
npm run build- Deploy to Firebase:
firebase deployYour app will be available at https://your-project-id.web.app
- Register: Create a new account with your email and password
- Complete Profile: Add your company information in the Profile section
- Add Customers: Navigate to Customers and add your client information
- Create Invoice: Go to Invoices β New Invoice, select a customer, add line items
- Manage Invoices: Track payment status, download PDFs, and manage your invoices
In your profile, you can configure:
- Invoice number prefix
- Default tax rate
- Payment terms
- Company information for invoices
- View total revenue
- Track pending invoices
- See recent invoice activity
- Quick statistics overview
- Add new customers with complete contact information
- Edit existing customer details
- Search and filter customers
- Delete customers when needed
- Create professional invoices
- Add multiple line items
- Automatic calculations (subtotal, tax, total)
- Set invoice status (Draft, Pending, Paid, Overdue)
- Download invoices as PDF
- Edit existing invoices
invoice-management/
βββ public/
β βββ (static assets)
βββ src/
β βββ components/
β β βββ Layout.js
β β βββ PrivateRoute.js
β βββ config/
β β βββ firebase.js
β βββ contexts/
β β βββ AuthContext.js
β βββ pages/
β β βββ Login.js
β β βββ Register.js
β β βββ Dashboard.js
β β βββ Profile.js
β β βββ Customers.js
β β βββ Invoices.js
β β βββ CreateInvoice.js
β β βββ ViewInvoice.js
β βββ App.js
β βββ index.jsx
β βββ index.css
βββ .env.example
βββ .gitignore
βββ firebase.json
βββ firestore.rules
βββ index.html
βββ package.json
βββ vite.config.js
βββ README.md
The application implements several security measures:
- Firebase Authentication for user management
- Firestore security rules to protect user data
- Each user can only access their own data
- Input validation on forms
- Secure password requirements
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email contact@flowdesk.tech or open an issue in the GitHub repository.
- β Added multi-currency support for invoices
- β Implemented business profiles for managing multiple businesses
- β Added email field to business profiles
- β Made invoice numbers always editable
- β Fixed PDF generation to use profile data instead of account data
- β Added currency selector to invoice creation and profile settings
- β Deployed to custom domain with SSL support
- β Enhanced CORS configuration for *.coremaven.tech domains
- β Fixed various UI issues and improved user experience
- Material-UI for the component library
- Firebase for backend services
- jsPDF for PDF generation
- React team for the amazing framework
- Vite for blazing fast development experience