Mini Donkey
Mini Donkey is a app to protect privacy on social media with encrypted steganography.
Prerequisite
- Install Flutter SDK. Please follow the instructions.
- Install Flutter edior plugin. Please follow the instructions.
- Install package dependencies with
flutter pub get
Getting Started
To get the code:
git clone https://github.com/tianhaoz95/photochat.git
To start the app:
- Start an Android/iOS emulator, check with
flutter devices - Use
flutter run
note: to run debug build on Android, do export ANDROID_DEBUG=true before flutter run. Otherwise, it will fail due to missing Android code signing credentials.
To run unit tests: flutter test
To run integration tests: flutter drive test_driver/app.dart
Structure
libcontains all the source code, and developers should work in this directory most of the time.testcontains unit tests and widget tests.test_drivercontains the integration tests.androidcontains the Android specific project setup.ioscontains the iOS specific project setup.macoscontains the MacOS specific project setup.webcontains the Web specific project setup.assetscontains the data including images and animations.
Documentation
Mini Donkey uses dartdoc to generate documentation.
To edit dartdoc configuration, see dartdoc_options.yaml and the official dartdoc docs.
The overall design is documented in README.md and the implementation details are documented in the source code and developers should also follow this guideline.
Generate docs
To generate docs locally, run dartdoc in the root Flutter project directory.
Note: the generated docs are ignored by verson control on purpose because it will be automatically generated per push to
masterbranch, please don't ever check the generated docs into version control.
Dependencies
The dependencies are tracked in pubspec.yaml as Flutter convention.
Upgrade a dependency
To upgrade a dependency, change the exact version number in pubspec.yaml and then run flutter pub get to install the upgraded version.
To upgrade all dependencies, use flutter pub upgrade. Note that, as some Flutter package has not yet reach a stable state, doing so can result in crashes.
Automation
Heimdall
Heimdall runs linter checks, unit tests and widget tests for every push regardless of branch. For details please see the workflow configuration.
Thor
Thor runs integration tests on all devices for every pull request to the master branch. For details please see the workflow configuration.
Loki
Loki runs the releasing process for every push to the master branch and every release. For details please see the workflow configuration.
Libraries
- app
- app_context
- app_running_states
- backend_types
- base_theme_service
- btn_logo_with_loading_error
- camera_img_btn
- capacity_usage
- capacity_usage_request
- config
- contrib_btn
- contribute_screen
- custom_theme_selector
- dark_theme
- decode_request
- decode_response
- decoder
- decoding_result_screen
- dialog
- donkey_logo
- encode_request
- encode_response
- encode_result_screen_render_request
- encode_result_states
- encoder
- encoding_result_screen
- gallery_image_btn
- gallery_img_btn
- get_capacity
- home_screen
- i18n
- image_preview
- light_theme
- load_asset
- loading_states
- main
- message_logo
- messages_all
- messages_en
- messages_messages
- messages_zh
- mock_theme_service
- msg_bytes_converter
- pad_cryption_key
- pad_to_bytes
- platform_states
- prod_theme_service
- progressive_btn
- random_web_img_btn
- receive_screen
- screen_adapter
- send_screen
- settings_screen
- start_decode_btn
- start_encode_btn
- submit_decode_btn
- system_setting_toggle
- theme
- theme_settings
- theme_types
- token_input_field
- uploaded_img_conversion_request
- uploaded_img_conversion_response
- uploaded_img_to_data