Invoice Ninja client built with Flutter

  Flutter App

Invoice Ninja

Companion app for the Invoice Ninja web app.

Dashboard
View Invoice
List Invoice
New Invoice

Features

  • Dashboard
  • Clients
  • Products
  • Invoices
  • Quotes
  • Payments
  • Projects
  • Tasks
  • Vendors
  • Expenses
  • Tablet support
  • Web/Version 2

Setting up the app

  • Initialize the config filecp lib/.env.dart.example lib/.env.dart
  • Support running the code unsigned on Androidcp android/app/build.gradle.dev android/app/build.gradle
  • Run the appflutter run

Note: if you don’t have an Invoice Ninja backend setup you can test the app with these credentials:

  • Email: demo@invoiceninja.com
  • Password: Password0
  • URL: demo.invoiceninja.com

Steps to remove non-FOSS code

cp android/build.gradle.foss android/build.gradle
cp lib/utils/oauth.dart.foss lib/utils/oauth.dart
cp lib/ui/app/upgrade_dialog.dart.foss lib/ui/app/upgrade_dialog.dart
cp android/app/src/main/AndroidManifest.foss.xml android/app/src/main/AndroidManifest.xml
cp pubspec.foss.yaml pubspec.yaml 
rm pubspec.lock

Application Architecture

The application was created using the Flutter Redux Starter.

The architecture is based off these two projects:

Code generation

  • Run flutter packages pub run build_runner build --delete-conflicting-outputs to regenerate the model files. It will also remove the old generated files so conflicts are avoided..

Tests

  • Run flutter drive --target=test_driver/all_it.dart to run the tests

Code Signing

  • Run cp android/app/build.gradle.prod android/app/build.gradle to support running the code signed
  • Run cp android/key.properties.example android/key.properties to create the keys file
  • Run keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias invoiceninja to generate a key to be able to sign the android application.
  • Update android/key.properties according to the parameters you entered in previous command when you generated the key
  • Open a new Firebase project from your console. Firebase is used for authentication.
    • Inside the project go to Authentication and enable at least one method.
    • After go to add a new Android application. For the package name add com.invoiceninja.flutter
    • Press “Register App” button.
    • Download “google-services.json” and put it in android/app directory.

Contributions

We gladly accept contributions! If you’d like to get involved with development please join our Slack group.

Create pull requests for v1 against the ‘legacy’ branch and for v2 against the ‘develop’ branch.

Download Invoice Ninja client built with Flutter Source code on GitHub