Version 1.0.0 - A beautiful Spotify-inspired music streaming application built with React Native
Stream your favorite music with a sleek, modern interface featuring Spotify's iconic green theme. Search tracks from Spotify's vast library and play them instantly with YouTube audio streaming.
- Spotify-Inspired Green Theme - Authentic Spotify/Spotube aesthetic with the iconic
#1DB954green - Dark Mode Interface - Easy on the eyes with
#121212background - Smooth Animations - Slide-up player animations and press feedback
- Responsive Design - Optimized for various screen sizes
- Advanced Search - Search millions of tracks using Spotify's metadata API
- Album Artwork - High-quality album covers displayed throughout the app
- Track Information - Artist names, song titles, and album details
- Real-time Playback - Instant audio streaming via YouTube/Invidious
- Interactive Player - Full-featured bottom player with controls
- Seek/Scrub Support - Tap anywhere on progress bar to navigate through songs
- Playback Controls - Play, pause, skip forward, skip backward
- Progress Bar - Visual progress indicator with time stamps
- Background Playback - Continue listening while using other apps
- Bottom Navigation - Easy navigation with Home, Search, and Library tabs
- Full-Screen Experience - Headerless design for maximum content space
- Search Screen - Dedicated search with instant results
- Loading States - Beautiful loading indicators with Spotify green
- Empty States - Helpful messages when no results or content
- YouTube Integration - Access to millions of songs via YouTube
- Invidious Proxy - Reliable audio streaming through Invidious instances
- Multiple Servers - 5+ Invidious instances for redundancy
- Automatic Fallback - Seamless switching between servers if one fails
- High-Quality Audio - WebM/Opus format streaming
- Centralized Theme - Consistent colors throughout the app
- Spotify Green Accents -
#1DB954for all interactive elements - Typography - Clean, readable fonts with proper hierarchy
- Spacing & Layout - Professional padding and margins
This is the first stable release of Orpheus, featuring:
β
Complete music search and playback functionality
β
Professional Spotify-like UI/UX
β
Reliable audio streaming infrastructure
β
Interactive playback controls
β
Album artwork integration
β
Multiple Invidious server support
β
Smooth animations and transitions
β
Bottom navigation system
- Node.js 18.x
- Java/JDK 17
- Android Studio with SDK 35
- Physical Android device or emulator
- Install dependencies
npm install- Start Metro bundler
npm start- Run on Android (in a new terminal)
npm run androidThat's it! The app should build and launch on your connected device.
Quick Fix: Verify your environment matches our tested configuration:
# Run the environment checker
powershell -ExecutionPolicy Bypass -File .\check-environment.ps1Required versions (must match exactly!):
- React Native:
0.74.5 - Java/JDK:
17 - Node.js:
18.x - Gradle:
8.8 - Android Gradle Plugin:
8.5.2 - Android SDK:
35(compileSdk) - NDK:
25.1.8937393
π Detailed version info: See BUILD_REFERENCE.md
Note: If you're working alone and the app builds successfully with
npm run android, you can skip this section. Docker is for sharing with teammates or setting up automated builds.
This project includes Docker support to ensure everyone gets the exact same working build environment. This eliminates the "works on my machine" problem.
β Use Docker if:
- You're sharing this project with teammates
- Setting up CI/CD (GitHub Actions)
- Want guaranteed reproducible builds
- Testing on a new machine
β Don't need Docker if:
- Working alone on your local machine
- App builds successfully with
npm run android - You're actively developing (local is faster)
# Start development container
docker-compose up -d dev
# Enter the container
docker-compose exec dev bash
# Inside container: build the app
cd android && ./gradlew assembleDebugπ Complete Docker guide: See DOCKER_BUILD.md
This section contains the standard React Native setup instructions for reference.
Metro is the JavaScript bundler that ships with React Native.
npm startOpen a new terminal and run:
npm run androidnpm run ios- Open
App.tsxin your text editor and edit some lines. - For Android: Press R twice or select "Reload" from the Developer Menu (Ctrl + M)
- For iOS: Hit Cmd β + R in your iOS Simulator
This project includes comprehensive documentation to help you and others build successfully. Here's what each file does:
What it is: A complete development environment in a container
What it contains: Ubuntu 22.04 + Java 17 + Node 18 + Android SDK 35 + NDK 25.1.8937393 + Gradle 8.8
Why it exists: So others don't waste 2 days setting up their environment
How to use it:
docker build -f Dockerfile.dev -t orpheus-dev .
docker run -it -v ${PWD}:/app orpheus-dev bash
# Inside container: cd android && ./gradlew assembleDebugWhen to use: When onboarding new developers, or testing builds in a clean environment
What it is: Optimized Docker image for automated builds
What it contains: Same as Dockerfile.dev but optimized for CI/CD (smaller, faster)
Why it exists: For GitHub Actions, GitLab CI, or other automated build systems
How to use it: Automatically used by .github/workflows/android-build.yml
When to use: In CI/CD pipelines (runs automatically on git push)
What it is: Easy management of Docker containers
What it contains: Configuration for both dev and ci containers
Why it exists: Simplifies Docker commands - one command instead of many
How to use it:
docker-compose up -d dev # Start development container
docker-compose exec dev bash # Enter the container
docker-compose down # Stop everythingWhen to use: When you want to use Docker but don't remember all the commands
What it is: List of files Docker should ignore when building
What it contains: node_modules, build folders, git files, etc.
Why it exists: Makes Docker builds faster (doesn't copy unnecessary files)
How to use it: You don't - Docker uses it automatically
When to use: Automatic - no action needed
What it is: Complete guide to using Docker for this project
What it contains:
- Step-by-step Docker setup instructions
- Usage scenarios (first-time setup, CI/CD, clean builds)
- Troubleshooting Docker-specific issues
- What Docker helps with vs. what it doesn't
Why it exists: Comprehensive reference for Docker workflow
How to use it: Read it when you want to use Docker or share project with others
When to use: When setting up Docker, troubleshooting Docker builds, or onboarding teammates
What it is: Quick reference card with all working versions
What it contains:
- Exact versions that work (React Native 0.74.5, Gradle 8.8, etc.)
- Emergency fix commands
- Version compatibility matrix
- Common error solutions
Why it exists: Quick lookup when you forget what versions work
How to use it: Keep it open when troubleshooting build issues
When to use: When builds break, when setting up new machine, when someone asks "what version?"
What it is: Overview of the entire Docker system
What it contains:
- What all the Docker files do
- How the build system works
- Best practices (when to use Docker vs local)
- Success metrics
Why it exists: Big picture explanation of the Docker setup
How to use it: Read it to understand why Docker was added
When to use: When you want to understand the overall system architecture
What it is: PowerShell script that verifies your build environment
What it contains: Checks for correct versions of Java, Node, Gradle, Android SDK, NDK, etc.
Why it exists: Quickly verify your setup matches the working configuration
How to use it:
powershell -ExecutionPolicy Bypass -File .\check-environment.ps1When to use:
- After installing/updating Android Studio
- When builds suddenly fail
- Before starting work on a new machine
- To verify everything is configured correctly
What it is: Bash script version of the environment checker
What it contains: Same checks as PowerShell version
Why it exists: For Linux/Mac users
How to use it:
bash check-environment.shWhen to use: Same as PowerShell version, but on Linux/Mac
What it is: GitHub Actions workflow for automatic builds
What it contains:
- Builds Docker image
- Compiles debug APK on every push
- Compiles release APK on main branch
- Uploads APK as artifact
Why it exists: Automatically build and test on every commit
How to use it: Push code to GitHub - it runs automatically
When to use: - Automatic on every push/PR
- Download built APKs from GitHub Actions tab
- Share APKs with testers without building locally
β
Use: npm run android (local build)
β
Keep handy: BUILD_REFERENCE.md, check-environment.ps1
β Ignore: All Docker files, DOCKER_BUILD.md
β
Use: Give them DOCKER_BUILD.md
β
Tell them: Run docker-compose up -d dev to get started
β
Keep updated: BUILD_REFERENCE.md with any version changes
β
Use: .github/workflows/android-build.yml (already set up)
β
Check: GitHub Actions tab after pushing code
β
Download: Built APKs from GitHub artifacts
β
Run: check-environment.ps1 to verify versions
β
Check: BUILD_REFERENCE.md for correct versions
β
Try: Docker build to see if it's your environment or the code
Option 1 - Quick (Docker):
docker-compose up -d dev
docker-compose exec dev bash
cd android && ./gradlew assembleDebugOption 2 - Best for daily use (Local):
- Read
BUILD_REFERENCE.mdfor exact versions - Install Java 17, Node 18, Android SDK 35, NDK 25.1.8937393
- Run
check-environment.ps1to verify - Run
npm run android
| File | Type | For You Now? | For Others? | Purpose |
|---|---|---|---|---|
Dockerfile.dev |
Docker | β Optional | β Yes | Dev environment setup |
Dockerfile.ci |
Docker | β Optional | β Yes | CI/CD builds |
docker-compose.yml |
Docker | β Optional | β Yes | Easy Docker management |
.dockerignore |
Docker | β Auto | β Yes | Speed up Docker builds |
DOCKER_BUILD.md |
Docs | β Later | β Yes | Docker usage guide |
BUILD_REFERENCE.md |
Docs | β Keep handy | β Yes | Version quick reference |
DOCKER_SUMMARY.md |
Docs | β Optional | β Yes | System overview |
check-environment.ps1 |
Script | β Use this | β Yes | Verify your setup |
check-environment.sh |
Script | β (Windows) | β Mac/Linux | Verify setup |
.github/workflows/android-build.yml |
CI/CD | β Auto | β Yes | Auto builds on push |
- Bookmark
BUILD_REFERENCE.md- You'll reference it often - Run
check-environment.ps1monthly or when issues arise - Share
DOCKER_BUILD.mdwith new team members - Use Docker for clean builds when your local environment gets messy
- Push to GitHub and let Actions build APKs automatically
Run the environment checker:
powershell -ExecutionPolicy Bypass -File .\check-environment.ps1This will verify all your tool versions match the tested configuration.
# Kill all Java processes
taskkill /F /IM java.exe
# Clean Gradle cache
cd android
.\gradlew clean
rm -rf .gradle
cd ..
# Rebuild
npm run androidAlready configured in android/gradle.properties:
- Gradle max memory: 2GB
- Parallel builds: disabled
If you have more RAM, you can increase the memory in android/gradle.properties.
Already fixed with forced resolution in android/app/build.gradle. If broken, verify it contains:
configurations.all {
resolutionStrategy {
force 'androidx.core:core:1.13.1'
force 'androidx.core:core-ktx:1.13.1'
}
}- Build Reference: See BUILD_REFERENCE.md for emergency fixes
- Docker: Try building with Docker to isolate environment issues
- React Native Docs: Troubleshooting
- Playlist creation and management
- Favorite tracks
- Recently played history
- Search filters (songs, albums, artists)
- Queue management
- Shuffle and repeat modes
- Offline playback/downloads
- Lyrics integration
- Audio equalizer
- Social features (share tracks)
- Cross-platform (iOS support)
- Desktop version
- Framework: React Native 0.74.5
- Language: TypeScript
- Audio Player: react-native-track-player
- Navigation: @react-navigation/native
- HTTP Client: axios
- Metadata API: Spotify Web API
- Audio Source: YouTube (via Invidious)
- UI Design: Custom components with Spotify theme
Orpheus/
βββ src/
β βββ components/
β β βββ Player.tsx # Bottom playback player
β βββ screens/
β β βββ SearchScreen.tsx # Main search interface
β βββ services/
β β βββ SpotifyProvider.ts # Spotify metadata API
β β βββ YouTubeAudioProvider.ts # Audio streaming
β βββ theme/
β β βββ colors.ts # Spotify color palette
β βββ interface/
β βββ types.ts # TypeScript definitions
βββ android/ # Android native code
βββ ios/ # iOS native code (not configured yet)
βββ App.tsx # Root component
Orpheus follows Spotify's design principles:
- Green is the Brand -
#1DB954Spotify green for all primary actions - Dark Mode First -
#121212background for OLED-optimized display - Content is King - Minimize chrome, maximize music
- Smooth Interactions - Animations should feel natural, not distracting
- Clear Hierarchy - White text for important info, gray for secondary
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure your code follows the existing style and includes appropriate documentation.
This project is for educational purposes. Please respect copyright laws and terms of service for Spotify and YouTube.
- Spotify - For design inspiration and metadata API
- Invidious - For providing YouTube audio proxy
- React Native Community - For amazing libraries and tools
- Spotube - For UI/UX inspiration
If you encounter any issues or have questions:
- Check BUILD_REFERENCE.md for build issues
- Run
check-environment.ps1to verify your setup - Open an issue on GitHub
- Check existing issues for solutions
This app is for educational purposes only. It uses:
- Spotify API for metadata (requires compliance with Spotify's terms)
- YouTube audio via Invidious (third-party proxy)
Please use responsibly and respect copyright laws.
Made with β€οΈ and React Native
Version 1.0.0 - November 2025