A modern multi-source music streaming app built with React Native and Expo for Android — search, play, queue, and manage your library across YouTube, YouTube Music, SoundCloud, and JioSaavn.
| Platform | Download |
|---|---|
| Android |
|
Streamify is a feature-rich music streaming app for Android built with React Native and Expo. It brings together multi-source search, rich playback controls, background playback, queue management, and a full local library — liked songs, playlists, recently played, and cloud sync — in one modern, dark-themed interface with English and Persian localization.
| Area | What you get |
|---|---|
| Discovery | Unified search across YouTube, YouTube Music, SoundCloud, and JioSaavn |
| Playback | Queue management, repeat and seek, volume, HLS livestream support, and background playback via react-native-track-player |
| Library | Liked songs, custom playlists, recently played tracks, and local persistence |
| Cloud | Supabase-backed accounts with cloud library sync across devices |
| UX | Dark theme, onboarding flow, drag-and-drop queue, offline caching, and in-app update checks |
| Languages | English and Persian (فارسی) localization built in |
- Framework:
React Native 0.81,React 19,Expo SDK 54,TypeScript 5 - Playback:
react-native-track-player,expo-av,hls.js,react-native-video-cache - State and persistence:
zustand,AsyncStorage,app-settingsandruntime-configmodules - Cloud:
@supabase/supabase-jsfor auth and cloud library sync - UI:
styled-components,react-navigation,react-native-reanimated,@expo/vector-icons - Build: EAS Build profiles, GitHub Actions CI/CD (
react-native-cicd.yml)
.
|-- components/ Screens and UI components (player, library, settings, onboarding)
|-- lib/ Business logic: runtime config, provider endpoints, cloud sync, backend API
|-- locales/ English and Persian translation files
|-- assets/ Images, icons, fonts, and category artwork
|-- patches/ patch-package patches (react-native-track-player fixes)
|-- .github/workflows/ EAS builds and release automation
|-- dist/ Expo export output
components/screens/PlayerScreen.tsx: full playback surface — queue, repeat, seek, lyrics, HLS livestreamscomponents/screens/SearchScreen.tsx: multi-source search across YouTube, YouTube Music, SoundCloud, and JioSaavncomponents/screens/LibraryScreen.tsx,LikedSongsScreen.tsx,ListsScreen.tsx: liked songs, playlists, and library managementcomponents/screens/HomeScreen.tsxandHomeFeedScreen.tsx: recommendations and feed surfacescomponents/screens/SettingsScreen.tsx: app settings, themes, and in-app update checkslib/cloud-library-sync.ts: Supabase-backed library sync across deviceslib/runtime-config.ts: provider instances, API bases, and runtime configuration
Node.js 18+(20 recommended)npmAndroid Studio(for emulator/device development)expo-clior theeas-clifor production builds
npm installnpm startThen press a for Android, or run:
npm run androidnpx eas build --platform android --profile productionor use the provided script:
npm run build:android| Scope | Command | Description |
|---|---|---|
| Dev | npm start |
Start the Expo development server |
| Dev | npm run android |
Run on Android device/emulator |
| Dev | npm run ios |
Run on iOS simulator |
| Dev | npm run web |
Run the web export of the app |
| Quality | npm run typecheck |
Run TypeScript type checking |
| Quality | npm run lint |
Run ESLint |
| Quality | npm run format |
Format code with Prettier |
| Quality | npm run format:check |
Verify formatting with Prettier |
| Build | npm run build:android |
Build a production APK via EAS |
| Build | npm run build:ios |
Build a production iOS app via EAS |
| Build | npm run prebuild |
Generate native projects with expo prebuild |
Runtime configuration (provider instances, API bases, Supabase URL) lives in lib/runtime-config.ts. Environment-specific values can be supplied through .env via react-native-dotenv. EAS build profiles live in eas.json and app-level config in app.json (package com.erfanbagheri.streamifymobile).
- Kotlin build failures: see
REACT_NATIVE_TRACK_PLAYER_FIX.mdfor the required patch instructions - Playback issues: check the foreground-service and notification config in
app.json - Provider/API problems: verify provider endpoints and API bases in
lib/runtime-config.tsandlib/provider-endpoints.ts
- Issues, pull requests, and documentation updates are welcome in English and Persian
- Conventional Commits in English are preferred for consistency
- Recommended prefixes:
feat:,fix:,docs:,refactor:,perf:,chore:,test:
- Create an issue for bug reports
- Check existing issues before reporting new ones
- Provide detailed information: device/OS version, app version, steps to reproduce, and error messages
استریمیفای یک اپلیکیشن پخش موسیقی مدرن برای اندروید است که با React Native و Expo ساخته شده. جستجوی چندمنبعه، پخش پیشرفته، پخش در پسزمینه، مدیریت صف، و کتابخانه کامل محلی — آهنگهای پسندیده، پلیلیستها، تاریخچه پخش، و همگامسازی ابری — را در یک رابط تیره و مدرن با بومیسازی انگلیسی و فارسی کنار هم قرار میدهد.
| بخش | توضیح |
|---|---|
| جستجو | جستجوی یکپارچه بین YouTube و YouTube Music و SoundCloud و JioSaavn |
| پخش | مدیریت صف، تکرار، جابجایی زمانی، کنترل صدا، پشتیبانی از پخش زنده HLS، و پخش در پسزمینه با react-native-track-player |
| کتابخانه | آهنگهای پسندیده، پلیلیستهای سفارشی، تاریخچه پخش، و نگهداری محلی دادهها |
| ابر | حسابهای مبتنی بر Supabase با همگامسازی کتابخانه ابری بین دستگاهها |
| تجربه کاربری | تم تیره، جریان خوشآمدگویی، صف با کشیدن و رها کردن، کش آفلاین، و بررسی بهروزرسانی داخل برنامه |
| زبانها | بومیسازی انگلیسی و فارسی داخلی |
- فریمورک:
React Native 0.81وReact 19وExpo SDK 54وTypeScript 5 - پخش:
react-native-track-playerوexpo-avوhls.jsوreact-native-video-cache - وضعیت و ذخیرهسازی:
zustandوAsyncStorageو ماژولهایapp-settingsوruntime-config - ابر:
@supabase/supabase-jsبرای احراز هویت و همگامسازی کتابخانه ابری - رابط کاربری:
styled-componentsوreact-navigationوreact-native-reanimatedو@expo/vector-icons - بیلد: پروفایلهای EAS Build و CI/CD با GitHub Actions
.
|-- components/ اسکرینها و کامپوننتهای رابط (پلیر، کتابخانه، تنظیمات، خوشآمدگویی)
|-- lib/ منطق برنامه: تنظیمات اجرا، اندپوینتهای منابع، همگامسازی ابری، API بکاند
|-- locales/ فایلهای ترجمه انگلیسی و فارسی
|-- assets/ تصاویر، آیکونها، فونتها، و آرتورک دستهها
|-- patches/ پچهای patch-package (اصلاحات react-native-track-player)
|-- .github/workflows/ بیلدهای EAS و اتوماسیون انتشار
components/screens/PlayerScreen.tsx: سطح کامل پخش — صف، تکرار، جابجایی زمانی، متن آهنگ، پخش زنده HLScomponents/screens/SearchScreen.tsx: جستجوی چندمنبعه در YouTube و YouTube Music و SoundCloud و JioSaavncomponents/screens/LibraryScreen.tsxوLikedSongsScreen.tsxوListsScreen.tsx: آهنگهای پسندیده، پلیلیستها، و مدیریت کتابخانهcomponents/screens/HomeScreen.tsxوHomeFeedScreen.tsx: پیشنهادها و سطح فیدcomponents/screens/SettingsScreen.tsx: تنظیمات برنامه، تمها، و بررسی بهروزرسانی داخل برنامهlib/cloud-library-sync.ts: همگامسازی کتابخانه ابری با Supabaselib/runtime-config.ts: نمونههای منابع، آدرسهای API، و تنظیمات اجرا
Node.js 18+(نسخه ۲۰ پیشنهاد میشود)npmAndroid Studio(برای شبیهساز یا دستگاه واقعی)expo-cliیاeas-cliبرای بیلدهای پروداکشن
npm installnpm startسپس کلید a را برای اندروید فشار دهید، یا:
npm run androidnpx eas build --platform android --profile productionیا با اسکریپت موجود:
npm run build:android| محدوده | دستور | توضیح |
|---|---|---|
| توسعه | npm start |
اجرای سرور توسعه Expo |
| توسعه | npm run android |
اجرا روی دستگاه/شبیهساز اندروید |
| توسعه | npm run ios |
اجرا روی شبیهساز iOS |
| توسعه | npm run web |
اجرای خروجی وب برنامه |
| کیفیت | npm run typecheck |
بررسی تایپ TypeScript |
| کیفیت | npm run lint |
اجرای ESLint |
| کیفیت | npm run format |
فرمت کد با Prettier |
| کیفیت | npm run format:check |
بررسی فرمت با Prettier |
| بیلد | npm run build:android |
بیلد APK پروداکشن با EAS |
| بیلد | npm run build:ios |
بیلد iOS پروداکشن با EAS |
| بیلد | npm run prebuild |
ساخت پروژههای نیتیو با expo prebuild |
- خطای بیلد Kotlin: فایل
REACT_NATIVE_TRACK_PLAYER_FIX.mdرا برای دستورالعمل پچ ببینید - مشکل پخش: تنظیمات foreground-service و ناتیفیکیشن را در
app.jsonبررسی کنید - مشکل منابع/API: اندپوینتهای منابع را در
lib/runtime-config.tsوlib/provider-endpoints.tsبررسی کنید
- گزارش مشکل، پولریکوئست، و بهروزرسانی مستندات به انگلیسی و فارسی خوشآمد است
- Conventional Commits به انگلیسی برای یکدستی ترجیح داده میشود
- پیشوندهای پیشنهادی:
feat:وfix:وdocs:وrefactor:وperf:وchore:وtest:
Made for music lovers everywhere 🎵
