mirror of
https://github.com/Jellify-Music/App.git
synced 2026-04-30 23:49:51 -05:00
a9d103b3b3
Deps updates, fixes text tickers not ticking
Fix blurred background on android
fix library selector being disabled when multiple libraries do exist
Fix issue where mp3 containers ('mpeg') would crash the app
* update readme, fix maestro
286 lines
14 KiB
Markdown
286 lines
14 KiB
Markdown
# 🪼 Jellify
|
||
|
||

|
||
|
||
[](https://github.com/anultravioletaurora/Jellify/releases)
|
||
[](https://github.com/anultravioletaurora/Jellify/actions/workflows/publish-beta.yml) [](https://github.com/Jellify-Music/App/actions/workflows/publish-ota-update.yml)
|
||
|
||
[](https://github.com/sponsors/anultravioletaurora) [](https://patreon.com/anultravioletaurora?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink)
|
||
|
||
|
||
## 🔗 Quick Links
|
||
|
||
[TestFlight](https://testflight.apple.com/join/etVSc7ZQ)
|
||
|
||
[](https://discord.gg/yf8fBatktn)
|
||
|
||
## 📄 Contents
|
||
|
||
- [Info](#ℹ️-info)
|
||
- [Downloading](#️-downloading)
|
||
- [Screenshots](#-screenshots)
|
||
- [Features](#-features)
|
||
- [Built with](#-built-with-good-stuff)
|
||
- [Support](#-support-the-project)
|
||
- [Running Locally](#️running-locally)
|
||
- [Contributing](#-contributing)
|
||
- [Special Thanks](#-special-thanks-to)
|
||
|
||
|
||
## ℹ️ Info
|
||
|
||
> **jellify** (verb) - _to make gelatinous_ <br>
|
||
> [see also](https://www.merriam-webster.com/dictionary/jellify)
|
||
|
||
_Jellify_ is a free and open source music player for the [Jellyfin Media Server](https://jellyfin.org/). Built with [React Native](https://reactnative.dev/), it is available for both iOS and Android.
|
||
|
||
> _Jellify_ requires a connection to a [Jellyfin Media Server](https://jellyfin.org/) server to work. [See also](https://jellyfin.org/docs/)
|
||
|
||
Showcasing the artwork of your library, it has a user interface congruent to what _the big guys_ do. _Jellify_ also provides algorithmic curation of your music (not that you have to use _Jellify_ that way). It's designed to be lightweight, and scale to even the largest of music libraries (...like 100K tracks large).
|
||
|
||
### 😇 Background
|
||
|
||
This app was designed with me and my dad in mind. I wanted us to have a sleek, one stop shop for live recordings of bands we like (read: the Grateful Dead). The UI was designed so that we'd find it instantly familiar and useful. CarPlay / Android Auto support was also a must for us, as we both use CarPlay religiously.
|
||
|
||
### ⚙️ Recommended Additions
|
||
|
||
These projects are **not** required to use _Jellify_, but are recommended by us to enrich your Jellyfin music experience!
|
||
|
||
- [lyarenei/jellyfin-plugin-itunes](https://github.com/lyarenei/jellyfin-plugin-itunes)
|
||
- Really good at fetching missing artist artwork for obscure / less popular artists
|
||
- Recommended to set this as a lower priority, Apple likes to respond with HTTP 429s when refetching all images with large libraries
|
||
- [LrcLib](https://repo.jellyfin.org/files/plugin/manifest.json)
|
||
- Available in the default plugins catalog
|
||
- Really good at fetching song lyrics
|
||
- [AudioMuse-AI](https://github.com/NeptuneHub/AudioMuse-AI)
|
||
- Performs sonic analysis on your music
|
||
- Creates "smart playlists" based on tempo and mood
|
||
|
||
## ⬇️ Downloading
|
||
|
||
### Android
|
||
|
||
Head to [releases](https://github.com/Jellify-Music/App/releases) to download the required .APK directly.
|
||
|
||
Also there is [obtanium](https://github.com/ImranR98/Obtainium) to which you can add Jellify as a repo to use the above releases as a repository.
|
||
|
||
For Obtanium, click "Add App", put "https://github.com/Jellify-Music/App" as the source URL, and on the next screen toggle "prereleases". You'll now be easily able to keep your local copy in sync with new releases.
|
||
|
||
### iOS
|
||
|
||
#### The TestFlight Way
|
||
|
||
Join the [TestFlight](https://testflight.apple.com/join/etVSc7ZQ) and install the latest version from there
|
||
|
||
#### The Sideloading Way
|
||
|
||
Head to [releases](https://github.com/Jellify-Music/App/releases) to download the required .IPA directly.
|
||
|
||
Install via [Altstore](https://altstore.io) or your favorite sideloading utility
|
||
|
||
|
||
## 📱 Screenshots
|
||
|
||
*Screenshots taken on iPhone 15 Pro Max*
|
||
|
||
---
|
||
|
||
### 🏠 Home
|
||
|
||
<p align="center">
|
||
<img src="screenshots/home.png" alt="Jellify Home" width="275" height="600">
|
||
</p>
|
||
|
||
---
|
||
|
||
### 🎵 Library
|
||
|
||
**Artists**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/library_artists.png" alt="Library Artists" width="275" height="600">
|
||
</p>
|
||
|
||
**Downloaded Tracks**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/library_downloaded_tracks.PNG" alt="Library Tracks" width="275" height="600">
|
||
</p>
|
||
|
||
**Artist View**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/artist.png" alt="Artist" width="275" height="600">
|
||
</p>
|
||
|
||
**Similar Artists**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/artist_similarto.png" alt="Similar Artists" width="275" height="600">
|
||
</p>
|
||
|
||
**Album Views**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/album.png" alt="Album" width="275" height="600">
|
||
<img src="screenshots/album_multiple_artists.png" alt="MultiArtist Album" width="275" height="600">
|
||
<img src="screenshots/offline_album.png" alt="Offline Album" width="275" height="600">
|
||
</p>
|
||
|
||
**Track Options & Add to Playlist**
|
||
|
||
<p align="center">
|
||
<img src="screenshots/track_options.png" alt="Track Options" width="275" height="600">
|
||
<img src="screenshots/playlist.png" alt="Playlist" width="275" height="600">
|
||
</p>
|
||
|
||
---
|
||
|
||
### 🔍 Search
|
||
|
||
<p align="center">
|
||
<img src="screenshots/search.png" alt="Search" width="275" height="600">
|
||
</p>
|
||
|
||
---
|
||
|
||
### ▶️ Player
|
||
|
||
<p align="center">
|
||
<img src="screenshots/player.png" alt="Player" width="275" height="600">
|
||
<img src="screenshots/player_queue.png" alt="Queue" width="275" height="600">
|
||
</p>
|
||
|
||
---
|
||
|
||
### 🚗 CarPlay
|
||
|
||
<p align="center">
|
||
<img src="screenshots/carplay.gif" alt="CarPlay" width="400" height="250">
|
||
</p>
|
||
|
||
---
|
||
|
||
### 🖥️ On the Server
|
||
|
||
<p align="center">
|
||
<img src="https://github.com/user-attachments/assets/741884a2-b9b7-4081-b3a0-6655d08071dc" alt="Playback Tracking" width="300" height="200">
|
||
</p>
|
||
|
||
|
||
## 💡 Features
|
||
|
||
### ✨ Current
|
||
|
||
- Available via Testflight and Android APK
|
||
- APKs are associated with each [release](https://github.com/anultravioletaurora/Jellify/releases)
|
||
- Light and Dark modes
|
||
- Home screen access to previously played tracks, artists, and your playlists
|
||
- Quick access to similar artists and items for discovering music in your library
|
||
- Jellyfin playback reporting and [Last.FM Plugin](https://github.com/jesseward/jellyfin-plugin-lastfm) support
|
||
- Full Library Browsing
|
||
- Playlist support, including creating, updating, and reordering
|
||
- Offline Playback
|
||
- Support for Jellyfin Instant Mixes
|
||
- Over-the-Air Updates
|
||
- Powered by [react-native-ota-hot-update](https://github.com/vantuan88291/react-native-ota-hot-update), incremental app updates are automatically fetched and applied from our [App Bundles Repository](https://github.com/Jellify-Music/App-Bundles)
|
||
- Shuffling
|
||
- Switching Music Libraries
|
||
|
||
### 🛠 Roadmap (in order of priority)
|
||
|
||
- ["Smart Shuffle"](https://github.com/anultravioletaurora/Jellify/issues/57)
|
||
- [CarPlay / Android Auto Support](https://github.com/anultravioletaurora/Jellify/issues/5)
|
||
- [App Store / Google Play / FDroid Release](https://github.com/anultravioletaurora/Jellify/issues/361)
|
||
- [Translations](https://github.com/anultravioletaurora/Jellify/issues/317)
|
||
- [Web / Desktop support](https://github.com/anultravioletaurora/Jellify/issues/71)
|
||
- [Shared, Public, and Collaborative Playlists](https://github.com/anultravioletaurora/Jellify/issues/175)
|
||
- [Watch (Apple Watch / WearOS) Support](https://github.com/anultravioletaurora/Jellify/issues/61)
|
||
- [TV (Android, Apple, Samsung) Support](https://github.com/anultravioletaurora/Jellify/issues/85)
|
||
|
||
## 🏗 Built with Good Stuff
|
||
|
||
[](https://reactjs.org) [](https://reactnative.dev) [](https://typescriptlang.org) [](https://github.com/prettier/prettier) [](https://github.com/anultravioletaurora/jellify/blob/main/LICENSE)
|
||
|
||
### 🎨 Frontend
|
||
|
||
[Tamagui](https://tamagui.dev/)\
|
||
[React Navigation](https://reactnavigation.org/)\
|
||
[React Native Blurhash](https://github.com/mrousavy/react-native-blurhash)\
|
||
[React Native CarPlay](https://github.com/birkir/react-native-carplay)\
|
||
[React Native Draggable Flatlist](https://github.com/computerjazz/react-native-draggable-flatlist)\
|
||
[React Native Nitro Image](https://github.com/mrousavy/react-native-nitro-image)\
|
||
[React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/)\
|
||
[React Native Toast Message](https://github.com/calintamas/react-native-toast-message)\
|
||
[React Native Vector Icons](https://github.com/oblador/react-native-vector-icons)
|
||
|
||
- Specifically using [Material Community Icons](https://oblador.github.io/react-native-vector-icons/#MaterialCommunityIcons)
|
||
|
||
### 🎛️ Backend
|
||
|
||
[Jellyfin SDK](https://typescript-sdk.jellyfin.org/)\
|
||
[Tanstack Query](https://tanstack.com/query/latest/docs/framework/react/react-native)\
|
||
[React Native DNS Lookup](https://github.com/tableau/react-native-dns-lookup)\
|
||
[React Native File Access](https://github.com/alpha0010/react-native-file-access)\
|
||
[React Native MMKV](https://github.com/mrousavy/react-native-mmkv)\
|
||
[React Native OTA Hot Update](https://github.com/vantuan88291/react-native-ota-hot-update)\
|
||
[React Native Track Player](https://github.com/doublesymmetry/react-native-track-player)\
|
||
[React Native URL Polyfill](https://github.com/charpeni/react-native-url-polyfill)
|
||
|
||
### 👩💻 Opt-In Monitoring
|
||
|
||
All logging and metrics gathering is _opt-in_ __by default__. This is merely here to help us make _Jellify_ better.
|
||
|
||
All logs and metrics are completely anonymized. No data can be traced back to you.
|
||
|
||
[GlitchTip](https://glitchtip.com/)
|
||
- [See logging statements](https://github.com/search?q=repo%3AJellify-Music%2FApp+console.&type=code&p=1)
|
||
|
||
[TelemetryDeck](https://telemetrydeck.com)
|
||
|
||
### 💜 Love from Wisconsin 🧀
|
||
|
||
This is undoubtedly a passion project of [mine](https://github.com/anultravioletaurora), and I've learned a lot from working on it (and the many failed attempts before it). I hope you enjoy using it! Feature requests and bug reports are welcome :)
|
||
|
||
## 🙏 Support the Project
|
||
|
||
You can support _Jellify_ development via [Patreon](https://patreon.com/anultravioletaurora?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink) or [GitHub Sponsors](https://github.com/sponsors/anultravioletaurora) starting at $1.
|
||
|
||
This allows me to prioritize specific features, acquire additional hardware for testing and development, and helps cover operational costs like Apple Developer Licenses.
|
||
|
||
|
||
## 🙏 Special Thanks To
|
||
|
||
- The [Jellyfin Team](https://jellyfin.org/) for making this possible with their software, SDKs, and unequivocal helpfulness.
|
||
- Extra thanks to [Niels](https://github.com/nielsvanvelzen) and [Bill](https://github.com/thornbill)
|
||
- [James](https://github.com/jmshrv), [Chaphasilor](https://github.com/Chaphasilor) and all other contributors of [Finamp](https://github.com/jmshrv/finamp). It's been surreal bolstering the selfhosted music ecosystem with you all!
|
||
- James’ [API Blog Post](https://jmshrv.com/posts/jellyfin-api/) proved to be exceptionally valuable during development
|
||
- The folks in the [Margelo Community Discord](https://discord.com/invite/6CSHz2qAvA) for their assistance
|
||
- [Nicolas Charpentier](https://github.com/charpeni) for his [React Native URL Polyfill](https://github.com/charpeni/react-native-url-polyfill) module and for his assistance with getting Jest working
|
||
- The team behind [Podverse](https://github.com/podverse/podverse-rn) for their incredible open source project, of which was used as a reference extensively during development
|
||
- My fellow [contributors](https://github.com/anultravioletaurora/Jellify/graphs/contributors) who have poured so much heart and a lot of sweat into making _Jellify_ a great experience
|
||
- Extra thanks to [John](https://github.com/johngrantdev), [Vali-98](https://github.com/Vali-98), and [Erik](https://github.com/felinusfish) for shaping and designing the user experience
|
||
- Shout out to [skalthoff](https://github.com/skalthoff) for championing many features:
|
||
- Gapless Playback
|
||
- Huge thank you to [Ritesh](https://github.com/riteshshukla04) for literally so many things:
|
||
- Offline Mode and Network Detection
|
||
- Error Boundary Detection
|
||
- Over-the-Air Updates
|
||
- _Supreme_ memes
|
||
- The friends I made along the way that have been critical in fostering an amazing community around _Jellify_
|
||
- [Thalia](https://github.com/PercyGabriel1129)
|
||
- [BotBlake](https://github.com/BotBlake)
|
||
- [Neptune1987](https://github.com/NeptuneHub)
|
||
- My long time friends that have heard me talk about _Jellify_ for literally **eons**. Thank you for testing _Jellify_ during it's infancy and for supporting me all the way back at the beginning of this project
|
||
- Tony (iOS, Android)
|
||
- Trevor (Android)
|
||
- [Laine](https://github.com/lainie-ftw) (Android)
|
||
- [Jordan](https://github.com/jordanbleu) (iOS)
|
||
- My best(est) friend [Alyssa](https://www.instagram.com/uhh.lyssarae?igsh=MTRmczExempnbjBwZw==), for your design knowledge and for making various artwork for _Jellify_.
|
||
- You’ve been instrumental in shaping it’s user experience, my rock during development, and an overall inspiration in my life
|
||
|
||
|
||
## ⭐️ Star History
|
||
|
||
[](https://www.star-history.com/#anultravioletaurora/Jellify&Jellify-Music/App&Date)
|