Skip to content

dilarakiraz/Beatify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Beatify


πŸ“± Demo Video & Screenshots

πŸŽ₯ Demo Video

πŸ”’ Lock Screen

WhatsApp_Video_2025_12_18_at_11_26_34_V1.mp4
Lock Screen - Music Playing

✨ Features

  • 🎡 Music Search - Search tracks, artists, albums, and playlists
  • 🏠 Personalized Home - Featured content, Daily Mix, Top Artists/Albums/Tracks
  • πŸ“» Radio Stations - Discover and listen to radio stations
  • 🎧 Music Player - Mini player and full-screen player with controls
  • ⭐ Favorites - Save your favorite tracks
  • πŸ“š Playlists - Create and manage your playlists
  • 🎨 Dark/Light Theme - Switch between themes
  • 🌍 Multi-language - Turkish and English support
  • πŸ’Ύ Offline Access - Local database for offline functionality
  • πŸ”„ Recently Played - Quick access to your recent tracks

πŸ› οΈ Tech Stack

  • Language: Kotlin 2.0.21
  • UI: Jetpack Compose, Material Design 3
  • Architecture: Clean Architecture (Data, Domain, Presentation)
  • Pattern: MVVM (Model-View-ViewModel)
  • Dependency Injection: Hilt 2.51.1
  • Database: Room 2.6.1
  • Networking: Retrofit 2.11.0, OkHttp 4.12.0
  • Image Loading: Coil 2.7.0
  • Media Player: ExoPlayer 2.18.7
  • Async: Kotlin Coroutines 1.9.0, Flow
  • Navigation: Navigation Compose 2.8.4
  • Data Storage: DataStore Preferences 1.1.1
  • API: Deezer API

πŸ“ Project Structure

app/
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ local/          # Room database, DAOs, entities
β”‚   β”œβ”€β”€ remote/         # API service, models
β”‚   β”œβ”€β”€ mapper/         # Data mappers
β”‚   └── repository/     # Repository implementations
β”œβ”€β”€ domain/
β”‚   β”œβ”€β”€ model/         # Domain models
β”‚   └── repository/    # Repository interfaces
β”œβ”€β”€ presentation/
β”‚   β”œβ”€β”€ ui/            # Compose screens and components
β”‚   β”œβ”€β”€ viewmodel/     # ViewModels
β”‚   └── state/         # UI state classes
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ navigation/    # Navigation routes and animations
β”‚   β”œβ”€β”€ player/        # Music player logic
β”‚   β”œβ”€β”€ service/       # Background services
β”‚   └── utils/         # Utility classes
└── di/                # Dependency injection modules

🎯 Architecture

This project follows Clean Architecture principles:

  • Presentation Layer: UI components (Compose), ViewModels, UI states
  • Domain Layer: Business logic, use cases, domain models
  • Data Layer: Repositories, data sources (remote API & local database)

MVVM Pattern

  • Model: Domain models and data sources
  • View: Jetpack Compose UI screens
  • ViewModel: Manages UI state and business logic

πŸ”‘ API

This app uses the Deezer API. The API is free and doesn't require authentication for basic features.

🌟 Key Features Explained

Music Player

  • Mini player at the bottom for quick access
  • Full-screen player with album art rotation
  • Play/pause, next/previous track controls
  • Seek bar for track navigation
  • Background playback support

Search

  • Real-time search with debounce (400ms)
  • Search across tracks, artists, albums, and playlists
  • Search history saved locally
  • Filter by content type

Playlists

  • Create custom playlists
  • Add/remove tracks
  • Browse public playlists from Deezer
  • Manage playlist tracks

πŸ§ͺ Testing

The project includes unit tests and UI tests using:

  • JUnit
  • Mockito
  • Turbine (for Flow testing)
  • Truth assertions
  • Espresso (for UI tests)

Releases

No releases published

Packages

 
 
 

Contributors

Languages