feat: add Expo mobile app (mobile/)

Full React Native app using react-native-track-player for native
audio — fixes background freeze, autoplay stopping, stuck play
button, and enables Android Auto in future. Includes:

- Navidrome API layer (ported from src/api.js)
- Zustand global store with SecureStore config persistence
- react-native-track-player with background playback service
- Bottom tab navigation: Home, Artists, Albums, Search, Settings
- Screens: Home, Library (Artists/Albums), ArtistDetail, AlbumDetail,
  Search, NowPlaying, Login/Settings
- Persistent PlayerBar with progress indicator
- Romaji/sort-tag display support carried over from web app

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-06-09 23:19:06 +02:00
1 parent 59adee60d5
commit 1b96706a1c
31 files changed
+8640

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
{
"expo": {
"name": "NovaSonic",
"slug": "NovaSonic_Mobile",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "dark",
"ios": {
"supportsTablet": true,
"infoPlist": {
"UIBackgroundModes": ["audio"]
}
},
"android": {
"adaptiveIcon": {
"backgroundColor": "#121212",
"foregroundImage": "./assets/adaptive-icon.png"
},
"package": "com.honeyy.novasonic",
"permissions": [
"android.permission.FOREGROUND_SERVICE",
"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"
]
},
"plugins": [
[
"react-native-track-player",
{
"androidPackage": "com.guichaguri.trackplayer"
}
]
],
"web": {
"favicon": "./assets/favicon.png"
}
}
}