A full-stack Spotify clone app built with Flutter, following Clean Architecture principles and leveraging Firebase as the backend.
- Authentication: Email and Password Sign Up / Sign In using Firebase Auth.
- Audio Playback: Custom integrated audio player using
just_audio. - Explore Music: Home screen displaying the newest releases and daily playlists fetched from Firestore.
- Favorites: Users can like songs and save them to their personalized favorites list syncing directly with the database.
- Profile Management: Profile page to manage user details.
- Theming: Sleek UI supporting both Light and Dark modes.
- Framework: Flutter
- State Management:
flutter_bloc - Dependency Injection:
get_it - Error Handling:
dartz(Functional programming with Either, Left, Right paradigms) - Architecture: Domain-Driven Design / Clean Architecture (Presentation, Domain, Data layers)
- Backend Service: Firebase (Authentication, Cloud Firestore, Storage)
- Flutter SDK installed.
- Recommended IDE: VS Code or Android Studio.
- An Android Emulator (with Google Play Services enabled) or physical device to run Firebase features successfully.
-
Clone the repository:
git clone <repository_url> cd spotify-app/spotify
-
Install dependencies:
flutter pub get
-
Firebase Configuration:
- The project expects a configured Firebase project.
- For Android, ensure
android/app/google-services.jsonis correctly set up. - Enable Firestore Database and Firebase Authentication (Email/Password) from the Firebase Console before launching.
-
Run the App:
flutter run
lib/
├── common/ # Shared widgets, helpers, and utilities across the app
├── core/ # Core app configurations (Themes, AppColors, Asset references)
├── data/ # Models, Repository implementations, Data Sources (Firebase)
├── domain/ # Entities, Repository Interfaces, UseCases
├── presantation/ # UI layer (Pages, Widgets, Blocs, Cubits)
├── main.dart # App entry point
└── service_locator.dart # Dependency injection setup