Invoice Maker is a Flutter-based mobile application designed to help freelancers, small businesses, and service providers create, manage, preview, and share professional invoices with ease.
Creating invoices manually is time-consuming and often error-prone. This app simplifies the process by providing a streamlined workflow for:
- creating invoices quickly from reusable client and item data
- previewing invoices before sending them
- generating PDF/print-friendly documents
- organizing invoices and business details in one place
- tracking invoice-related activity from a central dashboard
- Flutter
- Dart
- GetX for state management and navigation
- BLoC Cubits for UI-related state handling
- GetStorage and SharedPreferences for local persistence
- PDF and Printing packages for document generation
- Intl for date and formatting utilities
The app follows a simple user flow:
- Splash screen initializes the app and checks the current session.
- Users log in or continue from a saved session.
- The dashboard provides an overview of recent invoices and quick actions.
- Users can manage clients, items, and invoices from the main navigation.
- A new invoice can be created, previewed, and exported as a PDF or printed.
- Settings, profile, analytics, and templates are available from the more menu.
A few screens from the app are available in the images folder:
You can also view more screenshots here:
The project is organized into clear modules for scalability:
lib/
main.dart
controller/ # app controllers for auth, dashboard, invoice, settings
cubit/ # BLoC-style cubits for state management
models/ # data models
screen/ # UI screens and reusable widgets
services/ # API, auth, invoice, PDF, and repository services
styles/ # theme and app styling
utils/ # constants, shared helpers, colors, widgets
widgets/ # reusable UI components
| Package | Purpose | Why it is used |
|---|---|---|
| get | Navigation, state management, dependency injection | Simplifies routing and controller-based app architecture |
| get_storage | Local storage | Stores small app data such as session or preferences efficiently |
| shared_preferences | Preference persistence | Handles lightweight app settings and user preferences |
| flutter_bloc | Cubit-based state handling | Keeps UI state organized and predictable |
| intl | Internationalization and formatting | Formats dates, currency, and other display values |
| uuid | Unique ID generation | Helps assign IDs to invoices, clients, or items |
| PDF document creation | Generates printable invoice documents | |
| printing | Print support | Allows invoices to be printed directly |
| url_launcher | External link support | Enables opening links such as web URLs when needed |
- Flutter SDK installed
- Android/iOS emulator or physical device
flutter pub getflutter runThis project is currently focused on invoice generation and business management workflows for a modern Flutter app experience. It can be extended with backend integration, authentication APIs, and richer analytics in future versions.
