Skip to content

Latest commit

 

History

History
175 lines (132 loc) · 5.78 KB

File metadata and controls

175 lines (132 loc) · 5.78 KB

Melodyo Mobile

A cross-platform mobile music streaming application built with Flutter, featuring a clean architecture with domain-driven design principles.

📱 Overview

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.

✨ Features

  • 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

🏗️ Architecture

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

🛠️ Tech Stack

  • 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

📋 Prerequisites

  • Flutter SDK (latest stable version)
  • Dart SDK
  • Android Studio / Xcode (for platform-specific development)
  • Git

🚀 Getting Started

Installation

  1. Clone the repository:
git clone https://github.com/melodyo/melodyo-mobile.git
cd melodyo-mobile
  1. Install dependencies:
cd melodyo
flutter pub get
  1. Generate required files:
flutter pub run build_runner build --delete-conflicting-outputs
  1. Run the application:
flutter run

📦 Project Structure

Main Routes

  • 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

State Management

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

Domain Layer

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

🎨 Features in Detail

Audio Playback

  • Background audio service integration
  • Persistent playback controls
  • Floating mini-player widget

Categories System

  • Visual category browser with page controllers
  • Tag-based filtering within categories
  • Smooth animations and transitions

Library

  • User settings and preferences
  • Version information
  • Contact and support options
  • App store links (Myket, CafeBazaar)

🌐 Internationalization

The app supports multiple languages with RTL layout support. Translation keys are used throughout the app with the .tr() extension method.

🔧 Configuration

Environment-specific configurations are managed through the Environment class:

  • API endpoints
  • Version number
  • Store links (Myket, CafeBazaar)
  • Contact information

📱 Platform Support

  • Android: Minimum SDK version specified in android/app/build.gradle
  • iOS: Configuration in ios/ directory
  • Package Name: com.melodyo

🤝 Contributing

This is a private repository. For contribution guidelines, please contact the repository maintainers.

📄 License

Copyright © 2021 Melodyo. All rights reserved.

📞 Contact

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.