A modern music streaming application clone built with Flutter, featuring a clean UI, authentication, and music playback functionality.
Note: Add actual screenshots of your app here to showcase the UI
- π΅ Music Streaming: Play and manage your favorite songs
- π€ User Authentication: Secure login and registration with Firebase
- π¨ Dark/Light Mode: Theme switching functionality
- π± Responsive Design: Works on both Android and iOS
- πΎ Local Storage: Persistent data storage using Hydrated Bloc
- πΆ Audio Playback: Built-in audio player with just_audio
- π Firebase Integration: Real-time data synchronization
- Flutter: Cross-platform framework
- Dart: Programming language
- Flutter Bloc: State management
- Hydrated Bloc: Persistent state management
- Firebase Core: Firebase initialization
- Firebase Auth: User authentication
- Firebase Firestore: Database and real-time updates
- Just Audio: Audio playback engine
- Custom Fonts: Satoshi font family
- SVG Assets: Vector graphics for icons
- Material Design: Material 3 components
- Flutter SDK (>= 3.3.1)
- Dart SDK (>= 3.3.1)
- Android Studio / Xcode
- Firebase account
-
Clone the repository
git clone https://github.com/nikhil2132/Spotify-clone.git cd spotify-clone -
Install dependencies
flutter pub get
-
Set up Firebase
- Go to Firebase Console
- Create a new project
- Add Android and iOS apps to your Firebase project
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Place the files in the respective platform folders:
- Android:
android/app/google-services.json - iOS:
ios/Runner/GoogleService-Info.plist
- Android:
-
Configure Android
- Ensure you have the Android SDK installed
- Set up an Android emulator or connect a physical device
-
Configure iOS
- Open the project in Xcode
- Run
pod installin theiosdirectory - Build and run from Xcode or use
flutter run
# Run on all connected devices
flutter run
# Run on specific device
flutter run -d <device-id>
# Build for release (Android)
flutter build apk --release
# Build for release (iOS)
flutter build ios --releaselib/
βββ common/ # Shared widgets and utilities
β βββ bloc/ # Common bloc implementations
β βββ helper/ # Helper functions
β βββ widgets/ # Reusable widgets
βββ core/ # Core configurations
β βββ configs/ # App configurations
β β βββ assets/ # Asset configurations
β β βββ constants/ # App constants
β β βββ theme/ # Theme configurations
β βββ usecase/ # Use case definitions
βββ data/ # Data layer
β βββ models/ # Data models
β βββ repository/ # Repository implementations
β βββ sources/ # Data sources
βββ domain/ # Domain layer
β βββ entities/ # Business entities
β βββ repository/ # Repository interfaces
β βββ usecases/ # Use case implementations
βββ presentation/ # Presentation layer
βββ auth/ # Authentication screens
βββ choose_mode/ # Theme selection
βββ home/ # Home screen
βββ intro/ # Onboarding
βββ profile/ # User profile
βββ song_player/ # Music player
βββ splash/ # Splash screen
The project uses:
- Android Gradle Plugin: 8.3.0
- Kotlin: 1.8.10
- Gradle: 8.4
- Min SDK: 23
- Target SDK: Flutter's target SDK version
The project uses:
- Deployment Target: 15.0
- CocoaPods: For dependency management
- Firebase SDK: 12.0.0
The app supports both dark and light themes:
- Light Theme: Clean, modern interface with light colors
- Dark Theme: Easy on the eyes with dark background colors
Theme switching is handled through the ThemeCubit and can be accessed throughout the app.
The app includes a built-in audio player with:
- Play/Pause functionality
- Progress tracking
- Volume control
- Queue management
User authentication is handled through Firebase Auth with:
- Email/password authentication
- Session management
- User profile storage
The app uses BLoC (Business Logic Component) pattern for state management:
- Flutter Bloc: For state management
- Hydrated Bloc: For persistent state storage
- Clean separation of concerns
Run tests with:
flutter test-
Generate signed APK:
flutter build apk --release
-
Generate App Bundle (recommended):
flutter build appbundle --release
-
Generate iOS build:
flutter build ios --release
-
Submit to App Store Connect via Xcode
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter for the amazing cross-platform framework
- Firebase for backend services
- Spotify for inspiration
- Just Audio for audio playback
- Flutter Bloc for state management
If you have any questions or issues, please feel free to:
- Open an issue on GitHub
- Contact the development team
Made with β€οΈ using Flutter