67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
# AmpFire
|
|
|
|
AmpFire is a Fire TV / Android TV music client for self-hosted Subsonic-compatible servers such as Navidrome.
|
|
|
|
The project is intentionally built for two tracks:
|
|
|
|
1. **Sideload-first testing** on personal Fire TV devices.
|
|
2. **Publish-ready architecture** for eventual Amazon Appstore submission.
|
|
|
|
## Current status
|
|
|
|
This is a first-pass app scaffold with:
|
|
|
|
- Fire TV / Android TV launcher support.
|
|
- Kotlin + Jetpack Compose for TV UI.
|
|
- Media3 playback service architecture.
|
|
- Retrofit-based Subsonic API client.
|
|
- Broad Subsonic endpoint coverage in `SubsonicApi`.
|
|
- Server/login settings flow.
|
|
- Browse/search/library/now-playing UI shells.
|
|
- Publish-minded privacy/security notes.
|
|
- Gradle wrapper and Android build configuration verified with a real debug APK build.
|
|
|
|
## Intended stack
|
|
|
|
- Kotlin
|
|
- Android Gradle Plugin
|
|
- Jetpack Compose for TV
|
|
- AndroidX Media3 / ExoPlayer
|
|
- Retrofit + kotlinx.serialization
|
|
- DataStore for settings
|
|
- Coil for artwork
|
|
|
|
## Build
|
|
|
|
With Java + Android SDK installed:
|
|
|
|
```bash
|
|
./gradlew assembleDebug
|
|
```
|
|
|
|
Verified on the initial scaffold with:
|
|
|
|
```text
|
|
BUILD SUCCESSFUL in 1m 53s
|
|
35 actionable tasks: 35 executed
|
|
```
|
|
|
|
For sideloading:
|
|
|
|
```bash
|
|
adb connect FIRE_TV_IP:5555
|
|
adb install app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
## Security / publishing notes
|
|
|
|
- Do not log Subsonic stream URLs; they contain auth parameters.
|
|
- Prefer token/salt authentication over plain password parameters.
|
|
- Release builds should not bypass TLS validation.
|
|
- Review builds should provide either a demo server or reviewer credentials.
|
|
- App listing should describe AmpFire as a self-hosted music client, not a free music source.
|
|
|
|
## Roadmap
|
|
|
|
See [`docs/ROADMAP.md`](docs/ROADMAP.md).
|