A sophisticated music discovery and social platform built with Flutter that connects users through their music tastes.
- Multi-service Integration: Connect with Spotify, Last.fm, and YouTube Music
- Music Buddy Matching: Find users with similar music tastes
- Real-time Chat: Communicate with other music enthusiasts
- Content Discovery: Explore new artists, tracks, and genres
- User Profiles: Showcase your music preferences and statistics
- Media Integration: Connect anime and manga preferences through MyAnimeList
- Interactive Maps: View played tracks by geographic location
- Social Features: Share stories and updates with followers
- Comprehensive Analytics: Track your listening habits and preferences
- BLoC Pattern: State management using the BLoC (Business Logic Component) pattern
- Clean Architecture: Separation of concerns with domain, data, and presentation layers
- Modern UI: Material Design with custom theming and animations
- API Integration: RESTful API integration with error handling and caching
-
Authentication
- Login/Registration with email
- Social auth integration
- Session management
- Password reset flow
-
Music Features
- Music discovery feed
- Playlist management
- Track recommendations
- Genre exploration
-
Social Features
- User profiles
- Bud matching
- Watch parties
- Story sharing
-
Chat System
- Real-time messaging
- Media sharing
- Group chats
- Read receipts
- AppScaffold: Base layout component with navigation and theming
- AppAppBar: Consistent app bar with back navigation
- AppNavigationDrawer: Global navigation drawer
- AppButton: Standardized button components
- AppTextField: Custom text input fields
- Colors: Dynamic color system with light/dark modes
- Typography: Consistent text styles and hierarchies
- Spacing: Standardized spacing system
- Animations: Smooth transitions and feedback
-
Prerequisites
- Flutter SDK
- Dart SDK
- Android Studio / VS Code
- Git
-
Installation
git clone https://github.com/musicbud/flutter.git cd musicbud_flutter flutter pub get -
Run the App
flutter run
| Feature | Files | BLoC | Status |
|---|---|---|---|
| Home | home_page.dart | main_screen_bloc | ✅ Done |
| Auth | login_page.dart, register_page.dart | auth_bloc | ✅ Done |
| Profile | profile_page.dart | user_profile_bloc | ✅ Done |
| Chat | chat_page.dart | chat_bloc | ✅ Done |
| Music | music_page.dart | music_bloc | ✅ Done |
| Search | search_page.dart | search_bloc | ✅ Done |
| Library | library_page.dart | library_bloc | 🚧 In Progress |
| Event | event_page.dart | event_bloc | ✅ Done |
| Buds | buds_page.dart | bud_bloc | ✅ Done |
| Stories | stories_page.dart | story_bloc | ✅ Done |
| Analytics | analytics_page.dart | analytics_bloc | ✅ Done |
| Admin | admin_dashboard_page.dart | admin_bloc | ✅ Done |
| Channel | channel_management_page.dart | channel_bloc | ✅ Done |
| Match/Social | match_recommendations_page.dart | match_bloc | ✅ Done |
| Demo | user_profile_demo_page.dart | demo_profile_bloc | ✅ Done |
- Event-driven architecture
- Unidirectional data flow
- Separation of UI and business logic
BlocBuilder<AuthBloc, AuthState>(
builder: (context, state) {
if (state is AuthLoading) {
return LoadingIndicator();
}
if (state is AuthAuthenticated) {
return HomePage();
}
return LoginPage();
},
)-
Code Organization
- Feature-first directory structure
- Consistent file naming
- Clear separation of concerns
-
State Management
- Use BLoC for complex state
- Keep UI components pure
- Handle loading and error states
-
Performance
- Lazy loading of content
- Image caching
- Efficient list rendering
-
Error Handling
- Graceful error recovery
- User-friendly error messages
- Comprehensive error logging
lib/
├── app.dart # Main app configuration
├── injection_container.dart # Dependency injection setup
├── main.dart # Entry point
├── blocs/ # BLoC state management
├── config/ # App configuration
├── core/ # Core utilities and constants
├── data/ # Data layer
│ ├── models/ # Data models
│ ├── repositories/ # Repository implementations
│ └── services/ # API services
├── domain/ # Business logic layer
│ ├── entities/ # Business entities
│ ├── repositories/ # Repository interfaces
│ └── usecases/ # Business use cases
├── presentation/ # UI layer
│ ├── pages/ # App pages
│ ├── widgets/ # Reusable widgets
│ └── theme/ # App theming
└── utils/ # Utility functions
- Fork the repository
- Create a feature branch
- Make your changes
- Create a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Last updated: 2025-10-04
- Flutter SDK (2.10.0 or later)
- Dart SDK (2.16.0 or later)
- Android Studio / VS Code with Flutter extensions
- For iOS development: Xcode and CocoaPods
- Active accounts on music services (Spotify, Last.fm, etc.) for full functionality
-
Clone the repository
git clone https://github.com/54ba/musicbud_flutter.git cd musicbud_flutter -
Install dependencies
flutter pub get
-
Set up API keys
- Create a
lib/config/secrets.dartfile with your API keys:
class Secrets { static const String spotifyClientId = 'your_spotify_client_id'; static const String spotifyClientSecret = 'your_spotify_client_secret'; static const String lastFmApiKey = 'your_lastfm_api_key'; static const String malClientId = 'your_mal_client_id'; // Add other required API keys }
- Create a
-
Run the application
flutter run
The project follows a clean architecture approach with separation of concerns:
lib/
├── blocs/ # BLoC state management components
│ ├── auth/ # Authentication-related BLoCs
│ ├── chat/ # Chat functionality BLoCs
│ ├── content/ # Content management BLoCs
│ └── user/ # User profile BLoCs
├── config/ # Application configuration
├── core/ # Core utilities and constants
├── data/ # Data layer (repositories, models, etc.)
│ ├── data_sources/ # Remote and local data sources
│ ├── models/ # Data models
│ ├── network/ # Network clients and adapters
│ └── repositories/ # Repository implementations
├── domain/ # Domain layer (entities, use cases)
│ ├── models/ # Domain entities
│ └── repositories/ # Repository interfaces
├── presentation/ # UI layer
│ ├── pages/ # Application screens
│ └── widgets/ # Reusable UI components
├── services/ # Service layer for business logic
├── utils/ # Utility functions and helpers
├── app.dart # Main application widget
└── main.dart # Entry point
flutter runflutter build apk --release
# OR for app bundle
flutter build appbundle --releaseflutter build ios --release
# Then archive in Xcode# Run all tests
flutter test
# Run specific test file
flutter test test/path_to_test_file.dart- Follow the Effective Dart style guide
- Use BLoC pattern for state management
- Follow the repository pattern for data access
- Write tests for all features
- Create feature branches from
develop - Use descriptive commit messages
- Create pull requests for review
- Squash commits when merging to
main
The app follows Clean Architecture principles:
- Domain Layer: Business logic and models
- Data Layer: API integration and local storage
- Presentation Layer: UI components and state management
Contributions to MusicBud are welcome! To contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure your code follows the project's coding standards and includes appropriate tests.
- GitHub: @54ba
- Project Link: https://github.com/54ba/musicbud_flutter
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by 54ba
A modern music player and management application built with Flutter.
MusicBud is a cross-platform music player application that offers a seamless listening experience with advanced features for music management, playlist creation, and audio customization. Built using Flutter, this app provides a consistent experience across multiple platforms with a beautiful, responsive UI.
- Music playback with advanced controls
- Playlist management
- Audio visualization
- Offline music storage
- Seamless cloud synchronization
- Customizable equalizer
- Dark and light theme support
- Cross-platform compatibility
- Flutter SDK (2.10.0 or later)
- Dart SDK (2.16.0 or later)
- Android Studio / VS Code with Flutter extensions
- For iOS development: Xcode and CocoaPods
- Git for version control
-
Clone the repository
git clone https://github.com/yourusername/musicbud_flutter.git cd musicbud_flutter -
Install dependencies
flutter pub get
-
Run the application in debug mode
flutter run
flutter build apk --release
# OR for app bundle
flutter build appbundle --releaseflutter build ios --release
# Then open the iOS project in Xcode and archive itThe project follows a feature-first organization with Clean Architecture principles:
lib/
├── core/ # Core functionality and utilities
├── data/ # Data sources, repositories implementations
├── domain/ # Business logic, entities, repositories interfaces
├── presentation/ # UI components (screens, widgets)
├── config/ # App configuration
├── app.dart # Application entry point
└── main.dart # Main entry point
-
Feature Development
- Create feature branch from
devbranch - Implement feature following TDD principles
- Write unit and widget tests
- Create pull request to
devbranch
- Create feature branch from
-
Release Process
- Merge
devtostagingfor testing - After testing, merge
stagingtomainfor production release
- Merge
-
Code Style and Standards
- Follow Flutter/Dart style guidelines
- Use meaningful variable and function names
- Keep functions small and focused
- Document public APIs
The app theme can be customized in lib/config/theme.dart:
// Example for customizing colors
final lightTheme = ThemeData(
primaryColor: YourCustomColor,
accentColor: YourAccentColor,
// Other theme properties
);Environment variables are managed in .env files:
.env.development- Development settings.env.production- Production settings
Feature flags can be managed in lib/config/feature_flags.dart.
# Unit and widget tests
flutter test
# Integration tests
flutter test integration_test# Generate model classes
flutter pub run build_runner build --delete-conflicting-outputs# Analyze the project
flutter analyze# Update dependencies to latest compatible versions
flutter pub upgrade
# Update to exact versions
flutter pub upgrade --major-versions-
Build Errors
- Clean the build:
flutter clean - Get dependencies again:
flutter pub get - Check for outdated packages:
flutter pub outdated
- Clean the build:
-
Performance Issues
- Run in profile mode:
flutter run --profile - Check for performance issues in DevTools
- Run in profile mode:
-
Platform-Specific Issues
- Android: Check Android Studio Logcat
- iOS: Check Xcode Console
If you encounter issues not covered here:
- Check the issue tracker
- Join our Discord community
- Contact the development team at dev@musicbud.example.com
We welcome contributions to MusicBud! Here's how you can help:
-
Reporting Bugs
- Use the issue tracker with the bug template
- Include reproduction steps
- Mention device, OS, and app version
-
Suggesting Features
- Use the issue tracker with the feature request template
- Explain the use case and benefits
-
Pull Requests
- Fork the repository
- Create a feature branch
- Follow code style guidelines
- Include tests
- Update documentation
- Submit a PR to the
devbranch
-
Code Review Process
- All PRs require at least one review
- CI must pass before merging
- Follow the feedback cycle
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- All contributors to this project
- Open source libraries used in this application
__