A modern, feature-rich music streaming application built with React Native and Expo, designed to deliver seamless audio experiences across Android devices.
- Multi-source streaming: YouTube, Spotify, and local audio files
- Background playback: Continue listening while using other apps
- High-quality audio: Support for various formats and bitrates
- Offline mode: Download tracks for offline listening
- Modern design: Clean, intuitive interface with dark theme
- Responsive layout: Optimized for all screen sizes
- Smooth animations: Native-like transitions and interactions
- Customizable themes: Personalize your listening experience
- Search & discovery: Find music across multiple platforms
- Playlists: Create, manage, and share custom playlists
- Queue management: Dynamic playback queue with drag-and-drop
- Player controls: Full-featured media controls with progress tracking
- Recently played: Quick access to your listening history
- Cross-platform: Built with React Native for consistent experience
- Expo integration: Leverages Expo's powerful development tools
- Native performance: Optimized for smooth audio playback
- TypeScript: Fully typed for better development experience
- Frontend: React Native, TypeScript, Styled Components
- Backend Integration: YouTube API, Spotify Web API
- Audio Processing: react-native-track-player, expo-av
- State Management: React Context, AsyncStorage
- Development: Expo CLI, Metro bundler
- Build System: EAS Build, GitHub Actions CI/CD
- Node.js (v18.0.0 or higher)
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - Android Studio (for Android development)
-
Clone the repository
git clone https://github.com/yourusername/streamify.git cd streamify -
Install dependencies
npm install
-
Start the development server
npm start
-
Run on Android
npm run android
-
Configure EAS Build
eas build:configure
-
Build production APK
npm run build:android
Create a .env file in the root directory:
# API Keys
YOUTUBE_API_KEY=your_youtube_api_key
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
# App Configuration
APP_NAME=Streamify
APP_SCHEME=streamifyThe app uses EAS Build for production builds. Configuration is available in:
eas.json- Build profiles and settingsapp.json- Expo app configuration.github/workflows/- CI/CD pipeline
npm start- Start Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulatornpm run lint- Run ESLintnpm run format- Format code with Prettiernpm run tsc- Type checking
streamify/
├── components/ # React Native components
├── screens/ # App screens
├── utils/ # Utility functions
├── assets/ # Images, fonts, etc.
├── patches/ # Package patches
├── .github/workflows/ # CI/CD configuration
└── docs/ # Documentation
-
Build fails with Kotlin errors
- Solution: Check
REACT_NATIVE_TRACK_PLAYER_FIX.mdfor patch instructions
- Solution: Check
-
Audio playback issues
- Ensure proper permissions are granted
- Check audio service configuration in
app.json
-
API connection problems
- Verify API keys in environment variables
- Check network connectivity
For detailed build troubleshooting, see:
REACT_NATIVE_TRACK_PLAYER_FIX.md- Kotlin compilation fixes- Expo build logs in GitHub Actions
- EAS dashboard for build details
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use ESLint and Prettier for code formatting
- Write meaningful commit messages
- Test on multiple devices when possible
- Update documentation for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- React Native community for the excellent framework
- Expo team for development tools and services
- react-native-track-player contributors
- All open-source libraries that make this project possible
- Create an issue for bug reports
- Check existing issues before reporting new ones
- Provide detailed information including:
- Device/OS version
- App version
- Steps to reproduce
- Error messages/screenshots
Made with ❤️ for music lovers everywhere