{"id":39749917,"url":"https://github.com/fmidev/weather-app","last_synced_at":"2026-01-18T11:24:53.591Z","repository":{"id":37397972,"uuid":"339418233","full_name":"fmidev/weather-app","owner":"fmidev","description":"FMI's official weather application for mobile devices","archived":false,"fork":false,"pushed_at":"2026-01-15T07:28:42.000Z","size":13272,"stargazers_count":10,"open_issues_count":139,"forks_count":6,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-01-15T13:05:43.417Z","etag":null,"topics":["android","react-native","weather"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fmidev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-16T14:05:41.000Z","updated_at":"2026-01-15T06:53:32.000Z","dependencies_parsed_at":"2023-09-26T11:59:34.218Z","dependency_job_id":"204cd06c-5622-4105-bca4-1f2c7ee44a43","html_url":"https://github.com/fmidev/weather-app","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/fmidev/weather-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmidev%2Fweather-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmidev%2Fweather-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmidev%2Fweather-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmidev%2Fweather-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fmidev","download_url":"https://codeload.github.com/fmidev/weather-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmidev%2Fweather-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28535163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","react-native","weather"],"created_at":"2026-01-18T11:24:53.513Z","updated_at":"2026-01-18T11:24:53.582Z","avatar_url":"https://github.com/fmidev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# weather-app\n\n## **Prequisites**\n\n- Node (20)\n- Android Studio (latest)\n- XCode (latest)\n- Java JDK 17\n\nFollow this [guide](https://reactnative.dev/docs/0.74/environment-setup) for setting up React Native development environment.\n\n## **Licence**\nThis project is licensed under the MIT Licence - see the [LICENSE](LICENSE) file for details.\n\n\n## **Installation**\n\n`git clone --recurse-submodules https://github.com/fmidev/weather-app.git `\n\n`cd weather-app`\n\n`yarn install`\n\nIf you forget to clone with `--recurse-submodules`, you can fix assets by running\n\n`\ngit submodule update --init --recursive\n`\n\n### **Android**\n\n1. Obtain Google Maps API key and place it in `.env` as depicted in `.env.default`. Guides and troubleshooting from [react-native-maps documentation](https://github.com/react-native-maps/react-native-maps/blob/master/docs/installation.md#the-map-background-is-blank-google-maps)\n\n2. Create a `keystore.properties` file in `android/` folder:\n\n   `cd android \u0026\u0026 touch keystore.properties`\n\n   and add placeholder content:\n\n   ```\n   storePassword=YOUR_STORE_PASSWORD\n   keyPassword=YOUR_KEY_PASSWORD\n   keyAlias=YOUR_KEY_ALIAS\n   storeFile=YOUR_KEYSTORE_FILE\n   ```\n\n   Alternatively these can be provided as environment variables (e.g. in CI/CD pipeline):\n\n   ```\n   WEATHER_APP_RELEASE_STORE_PASSWORD=YOUR_STORE_PASSWORD\n   WEATHER_APP_RELEASE_KEY_PASSWORD=YOUR_KEY_PASSWORD\n   WEATHER_APP_RELEASE_KEY_ALIAS=YOUR_KEY_ALIAS\n   WEATHER_APP_RELEASE_STORE_FILE=YOUR_KEYSTORE_FILE\n   ```\n\n   Gradle will throw an error if one of the above is missing on `yarn android`.\n   To sign the app on release builds you must create a keystore file, see [android documentation](https://developer.android.com/studio/publish/app-signing#generate-key) and change the contents of `keystore.properties` or environment variables accordingly.\n\n## **Development**\n\nBefore running iOS or Android start metro: `yarn start`. Also make sure you have a valid DefaultConfig.ts.\n\n#### **Run in development environment (Android)**\n\n1. Open **{PROJECT_DIR}/android** in Android Studio and wait build to be completed\n\n2. Create / open Android **virtual device** (tested with: Pixel 2, API Level 29, Android 10.0)\n\n   - Click AVD Manager from top bar\n   - Create virtual device\n\n3. `yarn android`\n\n#### **Run the development version on Android phone**\n\n1. Do the above (Run in development environment (Android)) first!\n2. Check all relevant instructions from React Native's own page: https://reactnative.dev/docs/running-on-device. Most importantly, install adb by either the Android Studio or Android's own instructions: https://developer.android.com/studio/releases/platform-tools. Platform tools may not be installed to PATH. The installation path can be found in Android Studio in Tools -\u003e SDK Manager. Example path: `/Users/oksman/Library/Android/sdk`\n3. Plug your device to the USB port.\n4. Build the APK with Android Studio: Build -\u003e Build Bundles(s) / APK(s) -\u003e Build APK(s).\n5. Copy the built APK to the device and install it to the device.\n6. Check that your device show's in `adb`'s list of devices, for example:\n\n```\n➜  sdk ./platform-tools/adb devices\nList of devices attached\nR5CR207HAFP\tdevice\n```\n\n7. Connect to the development server, for example:\n\n```\n➜  sdk ./platform-tools/adb reverse tcp:8081 tcp:8081\n8081\n```\n\n8. The application should run now when opened in the device.\n\n#### **Run in development environment (iOS)**\n\n**If you have arm-based mac, do these before running:**\n1. Open Project's build settings in Xcode (Project not Targets)\n2. Add Any iOS Simulator SDK + \"arm64\" to Debug and Release under Architectures - Excluded Architectures\n3. Add following lines to end of your Podfile under ios -folder:\n\n`post_install do |installer|\n  installer.pods_project.build_configurations.each do |config|\n    config.build_settings[\"EXCLUDED_ARCHS[sdk=iphonesimulator*]\"] = \"arm64\"\n  end\nend`\n\n4. Delete VALID_ARCHS from main project's and Pods project's build settings.\n5. Clean project + rebuild\n\nIf you have problems you might need to do these as well:\n\n`rm -rf ~/Library/Developer/Xcode/DerivedData/ \u0026\u0026 pod deintegrate \u0026\u0026 pod update`\n\nYou might need to install ios-deploy to be able to run from command line\n `npm install -g ios-deploy`\n\nIf installing Node with nvm and try to start app from Xcode you might need to do this so Xcode finds Node.\n `ln -s $(which node) /usr/local/bin/node`\n\nRun project:\n1. `cd ios \u0026\u0026 pod install \u0026\u0026 cd ..`\n2. `npx react-native run-ios`\n\n### Troubleshooting\n\n#### Changing Metro server port\nBy default, the Metro server and the application use port 8081 to communicate with each other. In some environments, the port can be reserved, which causes the application to fail with the following error message:\n\n*\"Unable to load script. Make sure you're either running Metro (run 'npx react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release.\"*\n\nThis behaviour can be fixed by changing the port to e.g. 8080. To change the port, the following commands must be run:\n- `yarn start --port 8080`\n- `yarn android --port 8080` (or `npx react-native run-android --port 8080`)\n\n## **Config**\n\n1. `cp defaultConfig.ts.example defaultConfig.ts`\n\n2. `edit defaultConfig.ts`\n\n### **Units**\n\nThe units supported by the application are described on the table below.\nNote that you can only use the depicted unit abbreviations.\n\n| Parameter     | Units                             |\n| ------------- | --------------------------------- |\n| temperature   | 'C', 'F'                          |\n| precipitation | 'mm', 'in'                        |\n| wind          | 'm/s', 'km/h', 'mph', 'bft', 'kn' |\n| pressure      | 'hPa', 'inHg', 'mmHg', 'mbar'     |\n\nTable of abbreviations and their corresponding units.\n\n| Abbreviation | Unit                  |\n| ------------ | --------------------- |\n| 'C'          | celsius               |\n| 'F'          | fahrenheit            |\n| 'mm'         | millimeter            |\n| 'in'         | inch                  |\n| 'm/s'        | meters per second     |\n| 'km/h'       | kilometers per hour   |\n| 'mph'        | miles per hour        |\n| 'bft'        | beaufort              |\n| 'kn'         | knot                  |\n| 'hPa'        | hehtopascal           |\n| 'inHg'       | inch of mercury       |\n| 'mmHg'       | millimeter of mercury |\n| 'mbar'       | millibar              |\n\n## Detox e2e tests ###\n\nTest are located in `e2e-directory`. To run tests use commands\n\n```\nyarn e2e:build:ios\nyarn e2e:test:ios\n```\n\nor\n\n```\nyarn e2e:build:android\nyarn e2e:test:android\n```\n\nMost likely you have to change simulator names in ``.detoxrc.json`` to match your environment. Android emulator is quite sluggish and it is faster and more reliable to run tests with iOS simulator.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmidev%2Fweather-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffmidev%2Fweather-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmidev%2Fweather-app/lists"}