The fastest, easiest, bestest way to log your amateur radio operations on the go.
-
Forums - Please use our forums to report bugs, suggestions and issues in general.
-
Discord - Come here for casual discussions, development help and to share your operation photos and videos.
-
Instagram - Photos and Videos of Ham2K apps in use out in the real world.
-
Documentation - Read The Fine Manual
- Android - Google Play
- iOS - AppStore
- Android - Beta Testing via Google Play testing
- iOS - Beta Testing via TestFlight
This app is Open Source and licensed under the Mozilla Public License 2.0
First, complete the React Native - Environment Setup instructions.
Then clone this repository, cd into it and install the dependencies:
npm install
# you might need to also run `npm install redux-persist` if you get errors about missing modules
In order to use Mapbox maps in your local builds, you need to:
- Signup for a Mapbox account
- Create an access token with
downloads:readscope - Save the access token to
.envasMAPBOX_ACCESS_TOKEN
And finally, build the app for your target platform:
# iOS
(cd ios && pod install)
npm run ios
# Android
npm run android
iOS: Cmd ⌘ + D
Android: Cmd ⌘ + M (macOS) or Ctrl + M (Windows and Linux)
Icons from https://pictogrammers.com/library/mdi/
Tools
https://www.iosdev.recipes/simctl/
xcrun simctl
xcrun simctl listapps booted # List all apps
open `xcrun simctl get_app_container booted com.ham2k.polo data`/Documents
open `xcrun simctl get_app_container booted com.apple.DocumentsApp groups |grep FileProvider.LocalStorage|sed "s/group.com.apple.FileProvider.LocalStorage//g"`/File\ Provider\ Storage
- Start with a 2048x2048 image.
- Go to AppIcon > Image Sets, upload the image, generate and download the image set
- On
android/app/src/main/resreplacelaunch_screenin each subdirectory. - On
ios/polo/Images.xcassets/LaunchScreen.imagesetreplace the three versions oflaunch_screen - On
src/screens/StartScreen/imgreplace the three versions oflaunch_screen.
Environment setup:
$ brew tap crowdin/crowdin && brew install crowdin
Update CrowdIn with base English translations:
$ crowdin push sources
Fetch updated translations from CrowdIn:
$ crowdin pull translations
- keys that end in
-mdare meant to be used with Markdown formatting. - keys that end in
-a11yare meant to be used for accessibility labels, to be spoken aloud. - keys that end in
_zero,_one,_otherare meant to be used with pluralization.
In CrowdIn, create a "personal access token" at https://crowdin.com/settings#api-key
In PoLo, enable Developer Mode and in the Developer Settings screen, enter that personal token into the "CrowdIn API Key" field.
Then on the Quick Lookup field in the home screen, enter "CROWDIN" and press enter. This will refresh the current language in the app, and also fetch the list of all languages available in CrowdIn. After changing languages, and any time you reopen the app, you can enter "CROWDIN" again to fetch the latest version of the translations from CrowdIn.
npm run clean:js # wipe node_modules and reinstall
npm run clean:android # wipe android build and gradle caches
npm run clean:ios # wipe ios build and cocoapods caches, reinstall pods
npm run clean:watchman # wipe watchman caches
# or
npm run clean:all # wipe all caches and reinstall
# and then
npm start -- --reset-cache
npm run ios
npm run android
- Go to [About this Mac > Storage > Manage > Developer]
- Delete XCode caches
https://github.com/shinydevelopment/SimulatorStatusMagic
For some reason, sometimes the redux-persist does not install correctly
the first time, so you need to run npm install redux-persist manually.
React Native Troubleshooting page.

