A React Native Expo app for searching, rating, and organizing your favorite music using the Deezer API and Firebase.
- 🔍 Search Music: Search for songs, artists, and albums using the Deezer API
- ⭐ Rate Songs: Rate your favorite tracks from 1 to 10
- 💾 Save Offline: Save songs to your personal library for offline access
- 🏷️ Tags System: Create custom tags to organize your music collection
- 📊 Rating History: Track your rating history across all songs
- 🎯 Multi-API Ready: Built to support multiple music APIs (Deezer, Spotify, Tidal, etc.)
- Node.js (14 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli) - Firebase account
-
Clone the repository
git clone https://github.com/yourusername/MusicNexus.git cd MusicNexus -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
-
Configure your Firebase credentials in the
.envfile -
Start the development server
npx expo start
Copy the .env.example file to .env and configure the following variables:
EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
EXPO_PUBLIC_SPOTIFY_CLIENT_ID=your_spotify_client_id
EXPO_PUBLIC_SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
⚠️ WARNING:
If you setEXPO_PUBLIC_SPOTIFY_CLIENT_SECREThere, it will be embedded in your app bundle.
Anyone with access to your APK or JS bundle can extract this secret.
DO NOT use this in production or share your APK if you care about keeping your Spotify secret safe.
For real security, use a backend server to handle the Spotify secret and never expose it in your app code.
- Frontend: React Native, Expo
- Language: TypeScript
- Database: Firebase Firestore
- Music API: Deezer API (with support for future APIs)
- Navigation: React Navigation
- State Management: React Hooks
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- View your saved music collection
- Edit ratings and manage tags
- Filter and sort your music
- Search for music using Deezer API
- View song details (title, artist, album, duration)
- Rate and save songs to your library
- Create custom tags with colors
- Organize your music collection
- Filter music by tags
- View your complete rating history
- Track rating changes over time
- Statistics and insights
- View profile information and personal notes
- See statistics: total songs, albums, artists, average rating
- Breakdown by ratings, years, and tags
- Delete all songs or tags from your account
npx expo startnpx expo build --platform android
npx expo build --platform iosnpx expo install expo-dev-client
npx expo run:android
npx expo run:iosThis project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.
You may use and modify it freely for non-commercial purposes, as long as you give proper credit.
- Deezer API for providing free music data
- Firebase for backend services
- Expo for the amazing development platform
If you have any questions or need help, please open an issue on GitHub.
Made with ❤️ by Matheus Cerqueira Santana