{"id":20871330,"url":"https://github.com/MissingCore/Music","last_synced_at":"2025-05-12T12:34:12.148Z","repository":{"id":246271714,"uuid":"778461825","full_name":"MissingCore/Music","owner":"MissingCore","description":"A Nothing inspired local music player.","archived":false,"fork":false,"pushed_at":"2025-05-07T00:46:25.000Z","size":12128,"stargazers_count":378,"open_issues_count":6,"forks_count":29,"subscribers_count":7,"default_branch":"dev","last_synced_at":"2025-05-07T01:39:54.525Z","etag":null,"topics":["expo","music-player","nothing","react-native"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MissingCore.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":"docs/supported-gestures.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-27T19:15:44.000Z","updated_at":"2025-05-06T06:20:28.000Z","dependencies_parsed_at":"2024-06-27T00:25:56.937Z","dependency_job_id":"1a952a5d-39e2-47b3-bb00-4416eefbdd6f","html_url":"https://github.com/MissingCore/Music","commit_stats":null,"previous_names":["missingcore/music"],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissingCore%2FMusic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissingCore%2FMusic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissingCore%2FMusic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissingCore%2FMusic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MissingCore","download_url":"https://codeload.github.com/MissingCore/Music/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253739130,"owners_count":21956363,"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":["expo","music-player","nothing","react-native"],"created_at":"2024-11-18T06:18:19.975Z","updated_at":"2025-05-12T12:34:12.124Z","avatar_url":"https://github.com/MissingCore.png","language":"TypeScript","funding_links":[],"categories":["Community"],"sub_categories":["Media"],"readme":"\u003cimg src=\".github/assets/SOCIAL_PREVIEW_v2.png\" alt=\"Music app screen previews\" /\u003e\n\n# Music\n\nA Nothing inspired **local** music player.\n\n[\u003cimg height=\"80\" alt=\"Get it on Google Play\" src=\"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png\" /\u003e](https://play.google.com/store/apps/details?id=com.cyanchill.missingcore.music)\n[\u003cimg height=\"80\" alt=\"Get it on GitHub\" src=\"./.github/assets/get-it-on-github.png\" /\u003e](https://github.com/MissingCore/Music/releases)\n\n**The default branch (`dev`) is the development version of the repository. For the stable version, see the `main` branch.**\n\n## Features\n\n- Supports Android 7+\n- Works with Nothing Music Widget \u0026 Glyph Music Visualization\n- Diverse music organization: Albums, Artists, Favorites, Folder Structure, Playlists\n- Artwork customizability for: Albums, Artists, Playlists (long-press the artwork on their screen)\n- Background playback w/ media control notification\n- Queues\n- Theoretical support of [these media formats](https://developer.android.com/media/platform/supported-formats#audio-formats)\n- [Community translations](#translations)\n\n# Design\n\nThe current version of Music is inspired by the designs presented in the [`Introducing Ear (open) and OS 3.0` video](https://youtu.be/eV3Ch2lEr9Q?si=nof-tZ135NuI04eX).\n\n\u003e [!NOTE]  \n\u003e This app is designed to work best on \"phone\" layouts and isn't tested for larger screens (ie: tablets). We may improve the layout for larger screens in the future.\n\n\u003e [!IMPORTANT]  \n\u003e Be careful when clearing the cache of the app as if you accidentally clear the storage, all the data in the app will be deleted (ie: playlists, favorited tracks, artwork).\n\n## Version 1\n\nVersion 1 of Music is based on the design seen in this [comment on the Nothing Community forums](https://nothing.community/d/1825-nothing-music-player-app/2), created by [Alkid Shuli (alKid)](https://bento.me/alkid).\n\n\u003cdetails\u003e\n  \u003csummary\u003eVersion 1 Promotional Image \u0026 Design\u003c/summary\u003e\n  \u003cimg src=\"./.github/assets/SOCIAL_PREVIEW_v1.png\" alt=\"Promotional image used for version 1 of the app, showcasing some of the old design.\"\u003e\n\u003c/details\u003e\n\n## Built With\n\n[![React Native][React Native]][React Native-url]\n[![Expo][Expo]][Expo-url]\n[![TypeScript][TypeScript]][TypeScript-url]\n[![Zustand][Zustand]][Zustand-url]\n[![React Query][React Query]][React Query-url]\n[![React Native Track Player][React Native Track Player]][React Native Track Player-url]\n[![Tailwind CSS][Tailwind CSS]][Tailwind CSS-url]\n[![Drizzle][Drizzle]][Drizzle-url]\n\n## Permissions\n\nThis (hopefully) lists out all the permissions required by Music based on the permissions asked in the code and values listed out in the [App Manifest](./mobile/android/app/src/main/AndroidManifest.xml).\n\n|          | Permissions                                                                                                                                                                                                                                                                                                                                                                                 |\n| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Popups   | - Music and Audio ([Android 13+](https://developer.android.com/reference/android/Manifest.permission#READ_MEDIA_AUDIO))\u003cbr/\u003e- Files \u0026 Media (Android \u003c13)                                                                                                                                                                                                                                   |\n| Implicit | - Read External Storage; for reading Music \u0026 Audio Files ([unused in Android 13+](https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE))\u003cbr/\u003e- Write to External Storage ([unused in Android 11+](https://developer.android.com/reference/android/Manifest.permission#WRITE_EXTERNAL_STORAGE))\u003cbr/\u003e- Internet (only used for checking for new updates) |\n\n# Documentation\n\nSee all the [available documentation here](./docs). Some highlights include:\n\n- [`Building this App`](./docs/building-this-app.md)\n- [`Nothing Interactions`](./docs/nothing-interactions.md)\n- [`Supported Gestures`](./docs/supported-gestures.md)\n\n# Translations\n\nRead the [Translations](./docs/translations.md) documentation for a rundown of how to contribute translations to this app.\n\nThe [full list of translators can be found here](./TRANSLATORS.md). A huge thanks to the early translators prior to our move to Crowdin:\n\n| Translation |                      Translator                      |\n| :---------: | :--------------------------------------------------: |\n|   日本語    |   [@reindex-ot](https://www.github.com/reindex-ot)   |\n|   Deutsch   |    [@The-Ladle](https://www.github.com/The-Ladle)    |\n|  Indonesia  | [@naturbrilian](https://www.github.com/naturbrilian) |\n|   Español   |        [@G4b-0](https://www.github.com/G4b-0)        |\n|  Français   |        [@nin7o](https://www.github.com/nin7o)        |\n|  简体中文   |     [@yang1206](https://www.github.com/yang1206)     |\n|   Русский   |     [@klinoff0](https://www.github.com/klinoff0)     |\n|   Türkçe    |   [@mikropsoft](https://www.github.com/mikropsoft)   |\n|   Català    |      [@T-K-Y-M](https://www.github.com/T-K-Y-M)      |\n|    हिंदी    |    [@OxSourabh](https://www.github.com/OxSourabh)    |\n\n# Legal\n\nThis application and code is published under the GNU Affero General Public License v3.0 (https://github.com/MissingCore/Music/blob/main/LICENSE).\n\nNothing Technology Limited or any of its affiliates, subsidiaries, or related entities (collectively, \"Nothing Technology\") is a valid licensee and can use this app for any purpose, including commercial purposes, without compensation to the developers of this app. Nothing Technology is not required to comply with the terms of the GNU Affero General Public License v3.0.\n\nThis app is developed by cyanChill and is not affiliated with, funded, authorized, endorsed by, or in any way associated with Nothing Technology or any of its affiliates and subsidiaries. Any trademark, service mark, trade name, or other intellectual property rights used in this project are owned by the respective owners.\n\n## Licenses of Used Dependencies\n\nRefer to [THIRD_PARTY.md](./THIRD_PARTY.md).\n\n## License\n\n[AGPL-3.0](./LICENSE)\n\n## Privacy Policy\n\n[Privacy Policy Link](./PRIVACY_POLICY.md)\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[Drizzle]: https://img.shields.io/static/v1?style=for-the-badge\u0026message=Drizzle\u0026color=222222\u0026logo=Drizzle\u0026logoColor=C5F74F\u0026label=\n[Drizzle-url]: https://orm.drizzle.team/\n[Expo]: https://img.shields.io/badge/Expo-000020?style=for-the-badge\u0026logo=Expo\u0026logoColor=FFFFFF\n[Expo-url]: https://docs.expo.dev/\n[React Native]: https://img.shields.io/badge/React_Native-222222?style=for-the-badge\u0026logo=React\u0026logoColor=61DAFB\n[React Native-url]: https://reactnative.dev/\n[React Native Track Player]: https://img.shields.io/badge/React_Native_Track_Player-7253ed?style=for-the-badge\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAVCAYAAACt4nWrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHzSURBVHgBjVXRccIwDDUc/2SDZgR3ArIBbECYADpB0gnCBqYTABMEJoBOQDpBsoErkWciHMPFdzrZlvQsPSuOUoFhrd2Q1BBDEnv2mKQQPrkaMsgxIbmRRADJALCBPYU9Ez68ToaAc1AWyJQBSug4EFP4WOMAPgdWcmM0GvH6QJKQ7LCW448kGgLe4ACZWUJqAfA0QMGHn9Ar8F8HDjoY1JAcAc56j7vRiNEh8EkgQ43sFqiCyz2RTElq6CtJyRoHNIg/9yhDhiW6wrXY3HUGfDJ5kTS/cAIMjks20PuHnzCuRWAG4f0ZKKixXroqBVghYjfY1wqTuVcJ9y8PI4BK0ZIXUa0NtCb7X8bg9CyNxFsDHitvn9cr1V74TLXt2QRas7rfHTg2nK04ObXdpx15FDiqIlFF4lW9e1CFA+58wrjH3IB7jfIzlwTpHPYU9HDcGjjPXyuyMbYbBQItMo9EZhpV5SLmhkNmDxo9rjiY+zsDnxp3kqiu552+QhrYc+L+KLEmqj/4Uz6R47c4cEeqpr0vmm9pPqX5StiZhtgHCoGzU+Xt8XPLJZewf3r2ClU+jdDb0nvd0Jon1ZZ/wNofzRDwq8wCF7gFMMvC9v9OGnHvh+hfY7t3pvC6pfB8bt5hbcUvDmDHJUr9CdEAH/dsBH3+AWtRo7d9AnSYAAAAAElFTkSuQmCC\n[React Native Track Player-url]: https://rntp.dev/\n[React Query]: https://img.shields.io/static/v1?style=for-the-badge\u0026message=React+Query\u0026color=FF4154\u0026logo=React+Query\u0026logoColor=FFFFFF\u0026label=\n[React Query-url]: https://tanstack.com/query/latest\n[Tailwind CSS]: https://img.shields.io/badge/Tailwind_CSS-222222?style=for-the-badge\u0026logo=Tailwind+CSS\u0026logoColor=06B6D4\n[Tailwind CSS-url]: https://tailwindcss.com/\n[TypeScript]: https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=FFFFFF\n[TypeScript-url]: https://www.typescriptlang.org/\n[Zustand]: https://img.shields.io/badge/Zustand-101417?style=for-the-badge\u0026logo=data:image/png;base64,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\n[Zustand-url]: https://zustand.docs.pmnd.rs/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMissingCore%2FMusic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMissingCore%2FMusic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMissingCore%2FMusic/lists"}