{"id":16895129,"url":"https://github.com/chris-horner/socketweather","last_synced_at":"2025-03-17T06:31:55.258Z","repository":{"id":44839825,"uuid":"229036471","full_name":"chris-horner/SocketWeather","owner":"chris-horner","description":"A simple Australian weather app that uses BOM data. Inspired by Pocket Weather.","archived":false,"fork":false,"pushed_at":"2023-06-03T03:40:06.000Z","size":4638,"stargazers_count":100,"open_issues_count":6,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-27T19:23:09.190Z","etag":null,"topics":["android","coroutines","jetpack-compose","weather"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chris-horner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2019-12-19T11:03:11.000Z","updated_at":"2025-01-05T16:52:44.000Z","dependencies_parsed_at":"2024-10-13T17:21:36.708Z","dependency_job_id":null,"html_url":"https://github.com/chris-horner/SocketWeather","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-horner%2FSocketWeather","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-horner%2FSocketWeather/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-horner%2FSocketWeather/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-horner%2FSocketWeather/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chris-horner","download_url":"https://codeload.github.com/chris-horner/SocketWeather/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243847061,"owners_count":20357317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","coroutines","jetpack-compose","weather"],"created_at":"2024-10-13T17:21:28.207Z","updated_at":"2025-03-17T06:31:52.599Z","avatar_url":"https://github.com/chris-horner.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"app/src/main/play/listings/en-AU/graphics/phone-screenshots/1.png\" width=\"30%\" align=\"right\"\u003e\n\u003cimg src=\"app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png\" title=\"Launcher icon\" align=\"left\" width=\"72\" height=\"72\"\u003e\n\n# Socket Weather\n\nInspired by Shifty Jelly's retired [Pocket Weather](https://ausdroid.net/2018/08/31/shifty-jelly-announces-end-pocket-weather-au-will-last-least-another-12-months-shutting/),\nthis app makes use of a completely undocumented API from Australia's [Bureau of Meteorology](https://weather.bom.gov.au).\nIt might break at a moment's notice, but while it's up we can enjoy a simple Australian weather app. It's available on\n[Google Play](https://play.google.com/store/apps/details?id=codes.chrishorner.socketweather).\n\nThis app is a hobby project where I experiment with different ideas. The code, UI, and feature set are likely to change\nquite a bit. That being said, if there are any features or improvements you'd like to see, feel free to submit an issue\nto discuss potential PRs.\n\n## What API are you hitting?\n\nOne that delivers data for **Australia Only**. I stumbled upon https://api.weather.bom.gov.au/v1. All requests and\nresponses have been modelled after poking and prodding that endpoint.\n\n## What parts of the codebase are interesting?\n\n- [Resizable widgets](https://github.com/chris-horner/SocketWeather/tree/master/app/src/main/kotlin/codes/chrishorner/socketweather/widget) built in Compose using [Glance](https://android-developers.googleblog.com/2021/12/announcing-jetpack-glance-alpha-for-app.html)\n- A thin, [custom navigation wrapper](https://github.com/chris-horner/SocketWeather/blob/master/app/src/main/kotlin/codes/chrishorner/socketweather/Navigation.kt) around [Voyager](https://github.com/adrielcafe/voyager) for screen navigation\n- [Presenters](https://github.com/chris-horner/SocketWeather/blob/34b69fc1d180b2ec1ab902b5167329c5991b873b/app/src/main/kotlin/codes/chrishorner/socketweather/util/navigation/VoyagerNavigation.kt#L67) that use [Molecule](https://github.com/cashapp/molecule) to calculate screen state with Compose. ([Video](https://www.youtube.com/watch?v=q9p4ewk-9E4) on why this is interesting)\n- A custom [MoshiSerializer](https://github.com/chris-horner/SocketWeather/blob/master/app/src/main/kotlin/codes/chrishorner/socketweather/data/MoshiSerializer.kt) that integrates with Google's [DataStore](https://developer.android.com/topic/libraries/architecture/datastore)\n- A [swipe-from-right drawer](https://github.com/chris-horner/SocketWeather/tree/master/app/src/debug/kotlin/codes/chrishorner/socketweather/debug) in debug builds that allows for all kinds of configuration\n- [Integration](https://github.com/chris-horner/SocketWeather/blob/master/app/src/main/kotlin/codes/chrishorner/socketweather/rain_radar/map/MapView.kt) with [osmdroid](https://github.com/osmdroid/osmdroid), rather than Google Maps for the rain radar\n\n# License\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-horner%2Fsocketweather","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchris-horner%2Fsocketweather","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-horner%2Fsocketweather/lists"}