Fancy audio player for Synology DiskStation NAS content. This application arises from the need to find a better user experience and user interface compared to the commercial app provided by Synology: DSAudio. I hope it will be useful for many users!
- 100% Kotlin + Coroutines + Flow
- Jetpack
- Retrofit and OkHttp for networking layer
- Kodein for dependency injection
- Detekt: Code smell analysis for Kotlin projects
- Timber: Custom logger on top of Android's normal Log class
The architecture used in this project is a minimal expression of the Flux architecture. Specifically, the implementation of the Mini open source repo is used. The following image briefly shows the components that make up the application architecture and how they communicate with the Mini components. You can read more about this architecture in its repository documentation.
Synology Inc. is a Taiwanese corporation that specializes in network-attached storage (NAS) appliances. This application needs to ask for the Synology API to login in platform, get the list of songs, stream the audio content, etc. Synology provides a developer center with API documentation and tools to facilitate the development of modules within the ecosystem.
In order to build and test the application, while the application is being developed, it is needed to specify two values in a settings.properties files:
- Your Synology NAS DiskStation URL:
synologyApiBaseUrl=<YOUR_SYNOLOGY_DISKSTATION_URL>
You can use both the LAN IP or the QuickConnect URL.
- The SID obtained in the login request response:
synologyLoginApiSid=<YOUR_SYNOLOGY_LOGIN_SID>
You can retrieve it in the response of the login request using the Synology NAS API and adding your account name and password:
<YOUR_SYNOLOGY_DISKSTATION_URL>webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=<YOUR_ACCOUNT>&passwd=<YOUR_PASSWORD>&format=cookie