Go to file
Hillel Coren d38307d902 Implement desktop client layout 2022-05-30 15:04:59 +03:00
.github/workflows Update Flutter build version 2022-05-17 11:40:12 +03:00
android Update Android wrappers for Flutter 3 2022-05-24 19:12:22 +03:00
assets/images Use white logo on dark mode login 2021-08-17 11:20:34 +03:00
fastlane/metadata/android/en-US Update title 2021-05-30 18:54:12 +03:00
ios ios fixes for Flutter 3 2022-05-25 17:07:51 +03:00
lib Implement desktop client layout 2022-05-30 15:04:59 +03:00
linux Update linux wrapper files 2022-05-24 17:46:27 +03:00
macos Update macos wrappers to Flutter 3 2022-05-24 20:26:44 +03:00
samples Clean up code warnings 2021-05-24 22:11:39 +03:00
snap Update version 2022-05-09 18:15:42 +03:00
stubs Adjust font sizes in list tiles 2022-05-25 13:03:48 +03:00
test_driver Flutter upgrader 2021-11-16 16:14:46 +02:00
web Use login flag to show login tab 2021-10-31 13:12:20 +02:00
windows Correct Windows icons 2022-05-18 15:22:40 +03:00
.gitignore PDF support 2019-12-26 21:25:45 +02:00
.metadata Update macos wrappers to Flutter 3 2022-05-24 20:26:44 +03:00
LICENSE.txt Revert license change 2021-07-07 15:48:28 +03:00
README.md Update readme 2021-11-01 08:39:22 +02:00
analysis_options.yaml Flutter upgrader 2021-11-16 16:14:46 +02:00
invoiceninja.iml iOS app 2018-09-02 14:46:29 +03:00
invoiceninja_android.iml
pubspec.foss.yaml Update Android wrappers for Flutter 3 2022-05-24 19:12:22 +03:00
pubspec.lock Update Android wrappers for Flutter 3 2022-05-24 19:12:22 +03:00
pubspec.next.yaml Update Android wrappers for Flutter 3 2022-05-24 19:12:22 +03:00
pubspec.yaml Update Android wrappers for Flutter 3 2022-05-24 19:12:22 +03:00
run_all_it_tests.sh Combine all IT tests to one suite so as not to open and close the app between them. 2019-06-13 23:00:09 +03:00
starter.sh Recurring expenses 2021-08-26 12:14:49 +03:00

README.md

Invoice Ninja

Client app for Invoice Ninja.

Dashboard View Invoice List Invoice New Invoice

Setting up the app

  • Initialize the config file

    cp lib/.env.dart.example lib/.env.dart

  • Support running the code unsigned on Android

    cp android/app/build.gradle.dev android/app/build.gradle

  • Run the app

    flutter 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:

Blog Posts

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.

Credits

https://github.com/invoiceninja/invoiceninja#credits

Contributions

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