A cross-platform mobile music streaming application built with Flutter, featuring a clean architecture with domain-driven design principles.
Melodyo Mobile is a music streaming application that provides users with access to music feeds, artist profiles, albums, and categorized music content. The app supports both Android and iOS platforms with a focus on providing a smooth, native-like experience.
- Music Feed: Personalized music feed with albums, artists, and curated content
- Categories & Tags: Browse music by categories with an intuitive tag-based navigation system
- Library Management: Personal music library with playback history and favorites
- Artist & Album Views: Detailed views for artists and albums with rich media content
- Audio Playback: Background audio playback with audio service integration
- User Authentication: Complete authentication flow including login, registration, and password recovery
- Onboarding: Introduction screens for new users
- Terms & Policies: In-app terms and conditions viewer
- Multi-language Support: Internationalization (i18n) support with RTL language compatibility
- Theme Support: Custom theming with dark/light mode support
The application follows Clean Architecture principles with clear separation of concerns:
melodyo/
├── lib/
│ ├── presentation/ # UI Layer (Widgets, Routes, Bloc/Cubit)
│ │ ├── mobile/
│ │ │ ├── routes/ # Application routing
│ │ │ │ ├── auth/ # Authentication flows
│ │ │ │ ├── home/ # Main app screens
│ │ │ │ │ ├── feed/
│ │ │ │ │ ├── categories/
│ │ │ │ │ └── library/
│ │ │ │ ├── splash/
│ │ │ │ └── introduction/
│ │ │ └── widgets/ # Reusable UI components
│ │ └── root_app.dart
│ ├── cubit/ # State management
│ ├── models/ # Data models
│ ├── extensions/ # Dart extensions
│ ├── service_locator/ # Dependency injection
│ └── environment.dart # Environment configuration
├── domain/ # Business logic (separate package)
├── android/ # Android-specific configuration
└── ios/ # iOS-specific configuration
- Framework: Flutter (Dart)
- State Management: Bloc/Cubit with Hydrated Bloc for state persistence
- Navigation: AutoRoute for type-safe routing
- Dependency Injection: Injectable & GetIt
- Audio: Audio Service for background playback
- UI Components:
- Custom widgets and components
- Flutter SVG for vector graphics
- Flutter HTML for rich text rendering
- Flutter BlurHash for image placeholders
- Font Awesome icons
- Flutter SDK (latest stable version)
- Dart SDK
- Android Studio / Xcode (for platform-specific development)
- Git
- Clone the repository:
git clone https://github.com/melodyo/melodyo-mobile.git
cd melodyo-mobile- Install dependencies:
cd melodyo
flutter pub get- Generate required files:
flutter pub run build_runner build --delete-conflicting-outputs- Run the application:
flutter run- Splash (
/): Initial loading screen - Introduction (
/introduction): Onboarding screens - Authentication (
/auth): Login, registration, and password recovery - Home (
/home): Main application interface with bottom navigation- Feed Tab: Personalized music feed
- Categories Tab: Browse music by categories
- Library Tab: User's personal library and settings
The app uses BLoC pattern with Cubit for state management:
- Each major feature has its own Cubit for business logic
- States are managed using sealed classes for type-safety
- Hydrated Bloc for state persistence across app sessions
The domain layer is separated as an independent package containing:
- Entities (Category, Tag, Album, Artist, Page, etc.)
- Use cases (business logic operations)
- Repository interfaces
- Failure/error handling
- Background audio service integration
- Persistent playback controls
- Floating mini-player widget
- Visual category browser with page controllers
- Tag-based filtering within categories
- Smooth animations and transitions
- User settings and preferences
- Version information
- Contact and support options
- App store links (Myket, CafeBazaar)
The app supports multiple languages with RTL layout support. Translation keys are used throughout the app with the .tr() extension method.
Environment-specific configurations are managed through the Environment class:
- API endpoints
- Version number
- Store links (Myket, CafeBazaar)
- Contact information
- Android: Minimum SDK version specified in
android/app/build.gradle - iOS: Configuration in
ios/directory - Package Name:
com.melodyo
This is a private repository. For contribution guidelines, please contact the repository maintainers.
Copyright © 2021 Melodyo. All rights reserved.
For support or inquiries, contact the team via the in-app contact feature or through the configured contact email.
Note: This application requires backend API integration for full functionality. Ensure proper environment configuration before deployment.