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
lib
contains all the source code, and developers should work in this directory most of the time.test
contains unit tests and widget tests.test_driver
contains the integration tests.android
contains the Android specific project setup.ios
contains the iOS specific project setup.macos
contains the MacOS specific project setup.web
contains the Web specific project setup.assets
contains 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
master
branch, 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