Welcome to the Spotify Clone App project! This project demonstrates how to build a Spotify-like music streaming app using Flutter. It incorporates Clean Architecture, Bloc for state management, Firebase for backend services, and Figma for UI design.
Figma -> https://www.figma.com/design/nhC6EZAe0AL8e1dUqsEFTL/Spotify-Clone
- Features
- Getting Started
- Prerequisites
- Installation
- Usage
- Project Structure
- Technologies Used
- Contributing
- License
- Clean Architecture implementation
- State management using Bloc (Cubit)
- Firebase integration for Firestore storage and authentication
- Light and dark theme support
- User authentication (sign up and sign in)
- Music playback using just Audio
- User profile and favorite songs management
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
Make sure you have the following installed on your machine:
- Flutter
- Firebase CLI
- A code editor (e.g., VS Code)
-
Clone the repository:
git clone https://github.com/alvaral/spotify_clone_flutter.git cd spotify_clone_flutter
-
Install the required dependencies:
flutter pub get
-
Set up Firebase:
- Create a new Firebase project in the Firebase Console.
- Add your Android and iOS apps to the Firebase project.
- Download the
google-services.json
(for Android) andGoogleService-Info.plist
(for iOS) files and place them in the appropriate directories:android/app
forgoogle-services.json
ios/Runner
forGoogleService-Info.plist
- Enable Email/Password authentication in the Firebase Console.
- Set up Firestore database rules to allow read and write access.
-
Run the app:
flutter run
- Sign Up/Sign In: Register a new account or sign in with an existing account.
- Light/Dark Theme: Switch between light and dark themes.
- Music Playback: Browse and play music tracks.
- Favorites: Add or remove songs from your favorites.
- User Profile: View and edit user profile information.
spotify_clone_flutter/
│
├── lib/
│ ├── common/
│ │ ├── bloc/
│ │ ├── helpers/
│ │ └── widgets/
│ ├── core/
│ │ ├── configs/
│ │ ├── routing/
│ │ └── usecase/
│ ├── data/
│ │ ├── datasources/
│ │ ├── models/
│ │ └── repositories_impl/
│ ├── domain/
│ │ ├── entities/
│ │ ├── repositories/
│ │ └── usecases/
│ ├── presentation/
│ │ ├── feature1/
│ │ │ ├── bloc/
│ │ │ └── pages/
│ │ └── feature2/
│ │
│ ├── firebase_options.dart
│ ├── main.dart
│ └── service_locator.dart
│
├── test/ # same structure as the lib folder but with the test files
│
├── pubspec.yaml
└── README.md
- Flutter: Framework for building natively compiled applications for mobile from a single codebase.
- Bloc (Cubit): State management library for managing app state.
- Firebase: Backend-as-a-Service for authentication, Firestore, and storage.
- Figma: UI/UX design tool for designing the app interface.
- Just Audio: Audio playback package for Flutter.
Contributions are welcome! Please follow these steps to contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature-name
). - Make your changes and commit them (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/your-feature-name
). - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
Feel free to customize this README file according to your project's specific needs. If you have any questions or need further assistance, please contact us at [alvaroalonso222@gmail.com]. Happy coding!