an open source Navidrome client written in Swift — https://dub.sh/getflo
at develop 82 lines 4.3 kB view raw view rendered
1<div align="center"> 2 <img src="./meta/guthib.jpeg" alt="flo" width="100%"> 3 <br><br> 4 <p>Meet flo, an open source Navidrome client written in Swift.</p> 5</div> 6 7# flo 8 9As mentioned many times, flo is an open source Navidrome client written in Swift. It has modern yet familiar user interfaces 10built on top of Apple's latest UI framework: SwiftUI. While Navidrome supports Subsonic APIs, flo was purposely designed for Navidrome servers. 11 12However, flo is still under heavy development. Bugs and regular updates are expected to improve flo over time. It's worth noting that flo at 13this stage is unlikely to harm your iPhone or your beloved Navidrome server. 14 15## Features 16 17Everything you can expect from a music player: it plays music. However, here are some features you may enjoy: 18 19- Online streaming (save your storage) 20- Offline streaming (save your bandwidth) 21- Play by album (shuffle for surprises) 22- Background playback (just don't close the app) 23- Control playback via the "command center" (something in your "notification") 24 25flo may have opt-in "social" features in the future to make the listening experience more fun and extroverted. But for now, flo is intended to become one of the best 26Navidrome clients in the Apple ecosystem! 27 28To learn more about flo, visit flo's [landing page.](https://client.flooo.club) 29 30## Development 31 32For now just clone it and figure it out :) 33 34Jokes aside, make sure you have Xcode installed. The latest stable version is recommended, and as of this writing, Swift 5 is used. Another step, such as setting up a "provisioning profile," may be required to run this app in a development environment. 35 36This project uses integrated SwiftPM (Swift Package Manager) to manage app dependencies. So far, only four package are being used: 37 38- Alamofire — everyone's favorite http library 39- KeychainAccess — a simple wrapper for Keychain access 40- Nuke — image loading system 41- Pulse — network logger for Apple platforms 42 43The minimum number of dependencies is intended to make the project easier to maintain. 44 45If you're part of the Kepelet org, make sure you have [fastlane](https://fastlane.tools) installed. Then, you can run `fastlane match development` and you're ready to go without having to mess with the provisioning profile too much! 46 47Practically, this project uses the Gitflow workflow, where: 48 49- `main` is the "App Store" version 50- `develop` is the "TestFlight" public version 51- `release/xxx` is the "TestFlight" internal version 52- `features/yyy` or `bugfix/zzz` is the "staging" area of the current release (feature/bugfix branches) 53 54Realistically, sometimes feature branches are unnecessary, as the project doesn't run tests (yet) and the developer tests the app anyway. 55 56So, the flow is: 57 58- Draft a release branch 59- Every week or so, if no critical errors are present, merge to develop and submit to the TestFlight external group 60- Wait for approval 61- Test the beta app 62- Every week or so, if no critical errors are present, submit for review to the App Store 63- Wait for approval 64- When it's live, merge to main 65- Repeat 66 67Coming from Web Development, where no one technically controls the release process, I hate this cycle — I used to ship as soon as it was ready and figure it out later. This time, I have to draft a release every 1-2 weeks. It might get approved, or it might be rejected. But at least I tried! 68 69## Localization 70 71One of the promises of flo is customization — to make flo look the way you want. More importantly, it aims to make flo easier to use, and one of the efforts is localization: to make flo speak the language you know best. 72 73Unfortunately, we don't use third-party apps/services to manage localizations in flo, which means Xcode is required. While the process itself is [relatively easy](https://developer.apple.com/documentation/xcode/localizing-and-varying-text-with-a-string-catalog), but, still, the existence of Xcode become a significant barrier to contributing more languages. 74 75## Support 76 77Bug reports, typos, errors and feedback are welcome! Please use GitHub Issues for reports and GitHub Discussions for... discussion. For anything private, 78you can reach me via email at oss [at] rizaldy.club. I don't check email often but I have push notifications turned on! 79 80## License 81 82MIT.