To test the application, clone the project and then install all packages by running:
$> flutter pub get
After this, you need to let build runner auto-generate certain files by running the following command:
$> dart run build_runner watch -d
Depending on the target platform you want to test it, you need to provide a Google API Key,
for iOS create a file under ios/Runner/APIKey.plist
with the following content:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>apiKey</key>
<string>YOUR_KEY_HERE</string>
</dict>
</plist>
For Android create a file under android/app/src/main/res/values/keys.xml
with the following content:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="google_maps_key" translatable="false" templateMergeStrategy="preserve">
YOUR_KEY_HERE
</string>
</resources>
Now you are good to go, just run the following command:
$> flutter run
- intl and flutter_localizations - Handles i18n and formatting (specifically date picker formatting)
- google_maps_flutter - Used to display the location card and the volunteering maps screen
- geolocator - Used to gather the current coordinates of the user to sort volunteerings based off distance
- carousel_slider - Used to display the carousel in the volunteering maps screen
- widget_to_marker - Used to create custom google maps markers
- beamer - Used to enable declarative navigation throughout the whole application
- flutter_hooks and flutter_riverpod (with riverpod_generator and hooks_riverpod) - Used to facilitate state management with reusable hooks
- firebase_core, firebase_auth, firebase_storage, cloud_firestore, firebase_remote_config, firebase_analytics, and firebase_crashlytics - Used for backend services for user authentication, data storage, configuration, analytics, and crash reporting
- freezed_annotation, freezed, json_annotation, and json_serializable - Used to streamline data modeling and serialization, making it easier to handle JSON data
- image_picker and share_plus - Used to enable media integration and sharing features
- url_launcher - Used to launch external URLs directly from the app (google maps deeplink)
There are several events that track the main app usage:
news_shared
-> parameters:news_id
, the idea behind it is to track which news are being shared the mostvolunteering_favorite
-> parameters:volunteering_id
, the idea behind it is to track which volunteerings are the most likedvolunteering_applied
-> parameters:volunteering_id
, the idea behind it is to track which volunteerings are being applied the most to
There are two features that can be toggled:
- Sharing of news
- Favorite volunteerings
There is a current experiment being tested where a favorite button is added to the volunteering details to see if it triggers more favorites from users.
To execute tests, run the following command in the root of the project:
flutter test
If you do not possess the golden test files, append --update-goldens
to the above command.
It is also possible to target tests by tag by inputting the following command:
flutter test -t tag
The available tags are:
- golden
- auth
- entry
- news
- profile