How invoiceninja/flutter works
Invoice Ninja is a cross-platform client for managing business records against an Invoice Ninja backend. The principal workflow is to interact with a feature screen, have its view model use the entity repository, and read local state from Drift; writes are queued offline and later synchronized with the server. The README documents the layered MVVM and sync design, while the supplied source excerpts do not include the Dart runtime implementation, so the graph uses documented relationships and omits uncertain internal wiring.
Main entry points: router.dart App router · features Feature view models · repositories Entity repositories · services HTTP services
Components 19
App navigation
- App shell
lib/ui/features/shell - App router
lib/app/router.dart
Business features
- Authentication
lib/ui/features/auth - Billing records
lib/ui/features/invoices - Business records
lib/ui/features/clients - Expenses and banking
lib/ui/features/expenses - Projects and tasks
lib/ui/features/projects - Dashboard and reports
lib/ui/features/dashboard - Settings
lib/ui/features/settings - Feature view models
lib/ui/features
Data and sync
- Entity repositories
lib/data/repositories - Domain and API models
lib/data/models - Drift database
lib/data/db/app_database.dart - Entity DAOs
lib/data/db/dao - Mutation outbox
lib/data/db/dao/outbox_dao.dart - Sync dispatch
lib/domain/sync - HTTP services
lib/data/services
External services
- Invoice Ninja API
Other components
- User
Connections 25
- User → App shell: uses
- App shell → App router: navigates
- App router → Authentication: routes to
- App router → Billing records: routes to
- App router → Business records: routes to
- App router → Expenses and banking: routes to
- App router → Projects and tasks: routes to
- App router → Dashboard and reports: routes to
- App router → Settings: routes to
- Authentication → Feature view models: uses
- Billing records → Feature view models: uses
- Business records → Feature view models: uses
- Expenses and banking → Feature view models: uses
- Projects and tasks → Feature view models: uses
- Dashboard and reports → Feature view models: uses
- Settings → Feature view models: uses
- Feature view models → Entity repositories: uses
- Entity repositories → Domain and API models: uses
- Entity repositories → Entity DAOs: reads and writes
- Entity DAOs → Drift database: queries
- Entity repositories → Mutation outbox: queues mutations
- Sync dispatch → Mutation outbox: drains in order
- Sync dispatch → HTTP services: dispatches mutations
- HTTP services → Invoice Ninja API: HTTP requests
- HTTP services → Drift database: writes server state