/ README.md
README.md
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 9 As mentioned many times, flo is an open source Navidrome client written in Swift. It has modern yet familiar user interfaces 10 built on top of Apple's latest UI framework: SwiftUI. While Navidrome supports Subsonic APIs, flo was purposely designed for Navidrome servers. 11 12 However, flo is still under heavy development. Bugs and regular updates are expected to improve flo over time. It's worth noting that flo at 13 this stage is unlikely to harm your iPhone or your beloved Navidrome server. 14 15 ## Features 16 17 Everything 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 25 flo 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 26 Navidrome clients in the Apple ecosystem! 27 28 To learn more about flo, visit flo's [landing page.](https://client.flooo.club) 29 30 ## Development 31 32 For now just clone it and figure it out :) 33 34 Jokes 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 36 This 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 43 The minimum number of dependencies is intended to make the project easier to maintain. 44 45 If 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 47 Practically, 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 54 Realistically, sometimes feature branches are unnecessary, as the project doesn't run tests (yet) and the developer tests the app anyway. 55 56 So, 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 67 Coming 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 71 One 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 73 Unfortunately, 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 77 Bug reports, typos, errors and feedback are welcome! Please use GitHub Issues for reports and GitHub Discussions for... discussion. For anything private, 78 you 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 82 MIT.