Grapewine Music is an open-source Flutter-based music streaming application designed for advanced playlist customization and seamless music discovery. It leverages the Spotify API, assets_audio_player
for playback, and isar
for efficient storage and retrieval. Powered by Provider
for scalable state management, Grapewine Music delivers a responsive and user-centric experience.
- ✨ Elegant UI: Sleek and modern interface crafted with custom color themes and Google Fonts for a polished look.
- 📝 Advanced Playlist Management: Customize playlists with ease and organize music collections.
- 🔄 Recently Played: Smart tracking and display of recently played tracks for quick access.
- 🔍 Advanced Search: Instant search functionality for songs, albums, and artists.
- 🛠️ Scalable State Management: Managed by
Provider
for reactive, maintainable, and scalable state handling.
- Clone the Repository:
git clone https://github.com/yourusername/grapewine_music_app.git
- Navigate to the Project Directory:
cd grapewine_music_app
- Install Dependencies:
flutter pub get
- Create the
CustomStrings.dart
File: Inside thelib
directory, create a file namedCustomStrings.dart
with the following structure:Replace the placeholders with your Spotify API credentials.class CustomStrings { static const String clientId = ; static const String clientSecret = ; }
- Run the App:
flutter run
grapewine_music_app/
├── lib/
│ ├── authentications/ # Authentication services and logic
│ ├── Colors/ # App color themes
│ ├── config/ # Configuration files and environment setup
│ ├── data/ # Data services and local storage helpers
│ ├── models/ # Data models (Song, Playlist, etc.)
│ ├── presentation/ # UI presentation and screens
│ ├── providers/ # State management providers
│ ├── utilities/ # Utility functions
│ ├── CustomStrings.dart # Centralized custom strings
│ └── main.dart # App entry point
├── assets/ # Images, icons, and audio assets
├── pubspec.yaml # Dependency and configuration file
└── README.md # Project documentation
provider
- State managementassets_audio_player
- Audio playbackisar
- Local storage and data retrievalgoogle_fonts
- Custom fontsflutter_bounceable
- Bounce animations
- A Spotify Developer Account is required to contribute to this project.
- Cloud sync features (e.g., Firebase integration) are a TODO item and will include advanced synchronization capabilities in the future.
- This project has been an on-and-off endeavor; as a result, the code quality may vary. Suggestions and contributions are welcome to enhance the project further.
- Please report bugs or suggest improvements by opening issues in the Issues section.
- Contributions to fix bugs or add features are welcome!
- Fork the repository.
- Create a dedicated branch for your feature or bugfix.
- Commit and push your changes.
- Open a pull request for review.
- 🌐 Theme Customization: Dark/Light mode toggle for personalized themes.
- 🔀 Playlist Reordering: Drag-and-drop playlist reordering feature.
- 🛠️ Smart Recommendations: AI-powered song recommender system.
- ☁️ Cloud Sync: Integrate Firebase for cross-device synchronization.
This project is licensed under the MIT License.
Engineered with precision and passion in Flutter.