Skip to content

melodyo/melodyo-mobile

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors