There are two apps under one code base in this repository.
Within one code base there are 2 apps: AgoraDesk, LocalMonero. Each app can be built as Android and iOS native app. Design and logic separation made with flavors (more info further in this doc).
Universal Links work for Android and iOS. In case the app is installed on the device, the regular links will run apps instead of browsers. In case of two apps installed on one device the AgoraDesk app is prioritized (it means in case of link localmonero/something AgoraDesk app will be opened).
Push notifications to work on iOS & Android. In case the user's device (for example in China or with GrapheneOS) can't receive pushes, the app detects it and start polling in the background mode. More info
For privacy, all notifications are sent without translations and are translated on the client-side using data messages in the app code, not through Firebase Cloud Messaging (FCM).
The feature to use a custom proxy (HTTP, SOCKS4, or SOCKS5) has been added in the settings for more secure connections.
Made with Dart & Flutter ❤️
For build the app locally after getting code from repository use FOSS commands in Makefile
.
For example, to build a FOSS apk LocalMonero app
flutter build apk --verbose --flavor localmonero --dart-define=app.flavor=localmonero --dart-define=app.includeFcm=false
The apps use MapBox for reverse geocoding. In order to build it yourself, you need to create/provide your own MapBox API key. The instructions can be found here.
After that, create the file lib/keys/keys.dart
and add your key there: key const keysMapToken = 'YOUR_MAPBOX_KEY';
You will get the app that works without FCM services. Push notifications will be received with polling with foreground service (if the app is closed it still works).
iOS https://docs.fastlane.tools/actions/deliver/
fastlane deliver --skip-screenshots=true
Android https://docs.fastlane.tools/actions/supply/
fastlane supply --skip_upload_changelogs=true --track=internal --skip_upload_screenshots=true
ios/Runner/Runner.entitlements ios/Runner/Runner-localmonero.entitlements
For privacy reasons, the backend sends push and data messages without translations. We receive them in the app, translate, and then display them. Therefore, our backend doesn't have information about the user's locale.
Types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.
Mark commit number with #, for example fix: #89
.
Also we can use following:
git submodule update --rebase --remote