{"id":13821759,"url":"https://github.com/maxbbraun/mirror","last_synced_at":"2025-05-16T15:30:47.646Z","repository":{"id":100005253,"uuid":"50870195","full_name":"maxbbraun/mirror","owner":"maxbbraun","description":"Smart Mirror","archived":false,"fork":false,"pushed_at":"2023-03-06T01:12:42.000Z","size":21917,"stargazers_count":576,"open_issues_count":16,"forks_count":136,"subscribers_count":71,"default_branch":"master","last_synced_at":"2024-06-28T02:41:39.492Z","etag":null,"topics":["android","iot","smart-mirror"],"latest_commit_sha":null,"homepage":"https://medium.com/@maxbraun/my-bathroom-mirror-is-smarter-than-yours-94b21c6671ba#.81sljnn80","language":"Java","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/maxbbraun.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-02-01T20:52:30.000Z","updated_at":"2024-05-31T16:17:36.000Z","dependencies_parsed_at":"2023-03-13T15:41:55.769Z","dependency_job_id":null,"html_url":"https://github.com/maxbbraun/mirror","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbbraun%2Fmirror","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbbraun%2Fmirror/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbbraun%2Fmirror/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbbraun%2Fmirror/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbbraun","download_url":"https://codeload.github.com/maxbbraun/mirror/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213893315,"owners_count":15653524,"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","iot","smart-mirror"],"created_at":"2024-08-04T08:01:27.555Z","updated_at":"2024-08-04T08:07:00.844Z","avatar_url":"https://github.com/maxbbraun.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# Smart Mirror\n\nThis is the source code for the prototype UI of my smart mirror projects outlined in\n[this article](https://medium.com/@maxbraun/my-bathroom-mirror-is-smarter-than-yours-94b21c6671ba)\nand its [follow-up](https://medium.com/@maxbraun/smarter-mirrors-and-how-theyre-made-327997b9eff7).\n\n[![Smart Mirror 1](mirror-1.jpg)](https://medium.com/@maxbraun/my-bathroom-mirror-is-smarter-than-yours-94b21c6671ba)\n\n[![Smart Mirror 2](mirror-2.jpg)](https://medium.com/@maxbraun/smarter-mirrors-and-how-theyre-made-327997b9eff7)\n\nTo get started, import the whole project into\n[Android Studio](http://developer.android.com/tools/studio/index.html), then build and run the apk.\nThe first prototype uses\n[`HomeActivity.java`](app/src/main/java/net/maxbraun/mirror/HomeActivity.java) and the second one\nuses [`CompactHomeActivity.java`](app/src/main/java/net/maxbraun/mirror/CompactHomeActivity.java).\n\nWhile the time, date, and news show up without any additional changes, you need to first enable the\nrespective APIs in order to see the weather, commute, and body measures. Edit\n[`keys.xml`](app/src/main/res/values/keys.xml) and enter the keys for the\n[AccuWeather API](https://developer.accuweather.com), the [AirNow API](https://docs.airnowapi.org),\nthe [Google Maps Directions API](https://developers.google.com/maps/documentation/directions/start),\nand the [Withings API](https://developer.withings.com/oauth2/).\n\nThe home and work addresses and the travel mode for the commute are pulled from a\n[Firebase Realtime Database](https://firebase.google.com/docs/database/) and can be edited in the\n[Firebase Console](https://console.firebase.google.com/) after\n[adding Firebase to your Android Studio project](https://firebase.google.com/docs/android/setup).\nThe client expects a `commute_settings` path with string children `home`, `work`, and `travel_mode`.\nThe composition of the [compact UI](app/src/main/java/net/maxbraun/mirror/CompactHomeActivity.java)\nis also configured via the Firebase Database: The `compact_ui_settings` path has boolean children\nfor `body`, `commute`, `time`, and `weather` that determine which ones are shown. See\n[`database-example.json`](database-example.json) for a sample layout.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbbraun%2Fmirror","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbbraun%2Fmirror","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbbraun%2Fmirror/lists"}