Skip to content

MelodiqTV ๐ŸŽถ๐Ÿ“บ is a music and video streaming app for Android TV. Powered by Firebase ๐Ÿ”ฅ for real-time data and secure authentication, it uses Clean Architecture and MVI ๐Ÿ›๏ธ. The UI is built with Jetpack Compose for TV ๐Ÿ“บ for a smooth, modern experience optimized for large screens.

License

Notifications You must be signed in to change notification settings

sergio11/melodiqtv_android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

71 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MelodiqTV ๐ŸŽถโœจ: Unleash the Power of Music on Your TV

Welcome to MelodiqTV, your ultimate music experience on Android TV. MelodiqTV brings the power of music and video clips to your TV screen, offering a vast and diverse collection of music genres from around the world. Whether you're into the latest hits, timeless classics, or discovering new sounds, MelodiqTV has something for everyone.

MelodiqTV ๐ŸŽถ๐Ÿ“บ is a cutting-edge music and video streaming platform designed for Android TV, offering users a personalized and immersive entertainment experience. With MelodiqTV, users can explore a vast library of music and music videos, organized by genres and categories, while easily creating and managing multiple profiles to keep track of their favorites โญ. The app is built using Firebase ๐Ÿ”ฅ for real-time data synchronization and secure user authentication, ensuring a seamless and reliable experience. Developed with a robust architecture, it follows Clean Architecture principles and the MVI pattern ๐Ÿ›๏ธ, making the codebase maintainable and scalable. The UI is crafted with Jetpack Compose for TV ๐Ÿ“บ, providing a modern, flexible, and reusable interface that enhances the overall user experience on large screens.

Built using Jetpack Compose for TV, MelodiqTV seamlessly integrates into your Smart TV environment. Utilizing ๐Ÿฎ Fudge, a powerful UI Kit for TV apps, MelodiqTV ensures smooth navigation and an engaging user experience. Our platform transforms your living room into a musical haven, where you can explore, enjoy, and share your favorite tunes. ๐ŸŽถโœจ

A heartfelt thank you to the creators of the JetFit repository for providing such an invaluable starting point for Jetpack Compose for TV. Your work has been incredibly inspiring and instrumental in shaping the development of this project.

Happy listening with MelodiqTV! ๐ŸŽ‰๐Ÿ“บ

Slides are built using the template from Previewed. I extend my gratitude to them for their remarkable work and contribution.

Overview ๐ŸŒ

MelodiqTV is not just a music streaming serviceโ€”itโ€™s your ultimate music companion designed to elevate your listening experience. Hereโ€™s what makes MelodiqTV stand out:

Personalized Profiles ๐Ÿ‘ฅ

With MelodiqTV, every family member can create their own profile, allowing them to save favorite songs and receive personalized music recommendations. This feature ensures everyone can enjoy a tailored listening experience based on their unique tastes.

Advanced Music Search ๐Ÿ”

Our advanced search functionality allows you to find songs based on various criteria, including:

  • Genre ๐ŸŽต: Explore your favorite music styles.
  • Mood ๐Ÿ˜Š: Discover tracks that match your vibe.
  • Language ๐ŸŒ: Choose songs in your preferred language.
  • Release Date ๐Ÿ“…: Find the latest hits or timeless classics.

Customizable Preferences โš™๏ธ

MelodiqTV offers various customization options to enhance your experience:

  • Default Video Quality ๐Ÿ“บ: Set your preferred resolution for streaming music videos.
  • App Language ๐ŸŒ: Select the language for the app interface.
  • Playback Options ๐ŸŽง: Choose your preferred playback settings for a personalized experience.

With these features, MelodiqTV ensures a seamless, user-friendly experience tailored to your music preferences. Whether you're exploring new genres, saving favorites, or adjusting settings, MelodiqTV has got you covered. ๐ŸŽค๐Ÿ“บ

Technologies Used ๐Ÿ› ๏ธ

  • Kotlin: The preferred language for developing Android applications, offering modern syntax and powerful features to enhance productivity. ๐Ÿš€

  • Firebase Platform:

    • Firestore: ๐Ÿ”ฅ A NoSQL cloud database providing real-time data synchronization and offline support, ensuring fast and reliable data retrieval. ๐Ÿ“Šโœจ
    • Firebase Auth: ๐Ÿ” Simplifies user authentication with secure sign-in and user management capabilities. Supports various authentication methods. ๐Ÿ›ก๏ธ๐Ÿ“ฑ
    • Firebase Storage: โ˜๏ธ Stores user-generated content like profile images and media files with built-in security and seamless integration. ๐Ÿ“ธ๐ŸŽฅ
  • Coroutines: ๐ŸŒ€ Simplifies asynchronous programming and manages background tasks efficiently, enhancing app responsiveness. โฑ๏ธ

  • Clean Architecture: ๐Ÿ—๏ธ Promotes a well-structured and scalable app design by separating concerns into distinct layers, enhancing maintainability and testability. ๐Ÿ”

  • MVI (Model-View-Intent): ๐Ÿ“ˆ Implements a unidirectional data flow pattern, ensuring a clear separation between UI components and business logic. ๐Ÿ”„

  • Jetpack Compose for TV: ๐Ÿ“บ Utilizes Jetpack Compose to build modern, responsive UIs tailored for TV screens, optimizing the interface for large displays. ๐ŸŽจ

  • Jetpack Compose Navigation: ๐Ÿ—บ๏ธ Facilitates in-app navigation and screen transitions with a clear API, supporting deep linking and complex navigation flows effortlessly. ๐Ÿšฆ

  • Material Design 3: ๐ŸŽจ Applies the latest Material Design guidelines to create a visually appealing and intuitive user interface. ๐Ÿ–Œ๏ธ

  • ๐Ÿฎ Fudge: Fudge is a Jetpack Compose UI Kit for TV apps, providing pre-built components and tools to craft engaging experiences on the big screen. ๐ŸŽฌ๐Ÿš€

  • Jetpack DataStore: ๐Ÿ’พ A modern data storage solution for key-value pairs and typed objects, ensuring reliable data handling in your app. ๐Ÿ”

  • Media3 for Media Playback:

    • Media3 ExoPlayer: ๐ŸŽฅ Part of the Media3 library, ExoPlayer supports various media formats and advanced features for high-quality playback. ๐Ÿ“ป๐Ÿฟ
    • Media3 UI: ๐ŸŽจ Provides UI components for integrating media playback controls into your appโ€™s interface. ๐Ÿ•น๏ธ
  • Dagger Hilt: ๐Ÿงฉ A dependency injection library simplifying the management of dependencies and enhancing modularity in your app. ๐Ÿ”ง๐Ÿ’ก

  • Mapper Pattern: ๐Ÿ”„ Facilitates conversion between different data models, ensuring data consistency across application components. ๐Ÿ“

Architecture Overview ๐Ÿ›๏ธ

Our application is designed with a robust architecture for maintainability, testability, and flexibility. The architecture leverages several design patterns and principles:

Clean Architecture ๐Ÿ—๏ธ

Clean Architecture focuses on separating concerns into distinct layers:

  • Presentation Layer: Handles UI and user interactions using Jetpack Compose for modern interfaces.
  • Domain Layer: Contains business logic and use cases, independent of external frameworks.
  • Data Layer: Manages data sources and repositories, abstracting data retrieval and storage.

Data Sources ๐Ÿ“ฆ

Data sources fetch and manage data from various origins, including:

  • Remote Data Sources: Interact with cloud services or web APIs (e.g., Firebase Firestore).
  • Local Data Sources: Handle local data storage (e.g., Jetpack DataStore).

Repository Pattern ๐Ÿ—ƒ๏ธ

The repository pattern provides a unified interface for data access, decoupling data retrieval from the rest of the application for easier testing and maintenance.

Use Cases ๐Ÿงฉ

In the Domain Layer, Use Cases represent specific actions, encapsulating business logic and interacting with repositories to retrieve or modify data.

Inversion of Control (IoC) ๐Ÿ”„

IoC inverts control flow, allowing dependencies to be injected rather than hardcoded, promoting modularity and reducing boilerplate code.

SOLID Principles ๐Ÿ“

We apply SOLID principles to ensure our codebase remains clean and maintainable:

  • Single Responsibility Principle (SRP): Each class has one responsibility.
  • Open/Closed Principle (OCP): Classes are open for extension but closed for modification.
  • Liskov Substitution Principle (LSP): Subtypes must be substitutable for their base types.
  • Interface Segregation Principle (ISP): Clients should not depend on interfaces they do not use.
  • Dependency Inversion Principle (DIP): High-level modules depend on abstractions.

MVI (Model-View-Intent) ๐Ÿ“ˆ

MVI manages state and interactions, ensuring a predictable unidirectional data flow.

This architecture ensures that MelodiqTV is well-structured, easy to maintain, and scalable, adhering to best practices and design principles.

App Screenshots ๐Ÿ“ธ

Dive into Melodiq and explore its vibrant and intuitive design with these screenshots showcasing the heart of our app!

Onboarding ๐Ÿ 

Kickstart your musical adventure with our Onboarding screens. If youโ€™re new to Melodiq and havenโ€™t logged in yet, youโ€™ll be greeted by our welcoming landing page. Here, you can get a sneak peek of whatโ€™s in store ๐Ÿ“œ and easily navigate to login ๐Ÿ”’ or create a new account ๐Ÿ†• to start your sonic journey.

Sign In ๐Ÿ”‘

Ready to join the Melodiq community? Log in with your email and password to access all the musical features awaiting you. If youโ€™re not yet a member, donโ€™t worryโ€”our sign-up process is just a tap away! ๐ŸŒŸโœ‰๏ธ

Sign Up โœจ

Welcome to Melodiq! ๐ŸŽ‰ Setting up your account is a breeze and opens the door to a world of musical delights. Ready to create something amazing? ๐ŸŽถ

Simply enter your details: your name ๐Ÿ“, email ๐Ÿ“ง, and a secure password ๐Ÿ”’. Choose a password thatโ€™s memorable yet secureโ€”your musical adventure is our priority!

Once youโ€™ve filled in the fields, hit "Register" โœ… and youโ€™re all set! ๐ŸŽŠ Youโ€™re now part of the Melodiq family, ready to explore and enjoy exclusive features. ๐Ÿš€๐ŸŒŸ

Managing Your Profiles ๐Ÿ‘ค

Step into the Profiles section where customization and ease meet to enhance your musical journey. Hereโ€™s how you can make Melodiq truly yours:

  • Profile Selection: Choose which profile youโ€™d like to use from the Profile Selection screen. Itโ€™s your personal space where you can keep track of favorite songs and tailored recommendations.

  • Creating Profiles: Add up to four profiles to cater to family members or different users. Customize each profile with its own alias and avatar, making music a fun, personalized experience for everyone!

  • Editing Profiles: Update your profileโ€™s alias and avatar or change your security PIN with ease. Keep your account secure and reflect your personality in every way you choose.

  • Deleting Profiles: If a profile is no longer needed, delete it and remove all associated favorites and data. This keeps your app clean and organized, focusing on the songs and features that matter most to you.

The Profiles section is all about flexibility and personalization, ensuring your musical journey is as unique as you are.

Exploring the Home Screen ๐Ÿ“ฑ

Welcome to the vibrant Home Screen, the hub of your musical adventure. Hereโ€™s what awaits you:

  • Featured Songs Carousel ๐ŸŽ : Swipe through our rotating selection of standout songs. This dynamic showcase highlights popular and trending tracks to inspire your next musical creation.

  • Categories Row ๐Ÿ“Š: Browse through a variety of music categories, from genres to playlists. Presented in a sleek horizontal list, itโ€™s easy to find music based on your mood or current musical goals.

  • Personalized Music Recommendations โญ: Discover songs tailored to your taste and preferences. Based on your listening history and likes, this section offers suggestions that are perfect for your musical journey.

The Home Screen is designed to make your exploration of music delightful and engaging. Whether youโ€™re checking out featured tracks, exploring categories, or receiving personalized suggestions, everything is organized to enhance your musical experience.

Exploring Songs and More ๐ŸŽถโœจ

Step into the Songs section, your ultimate musical playground where your sonic adventures come to life! ๐ŸŽ‰ This hub is designed to help you explore and enjoy a variety of songs that cater to your preferences and musical goals.

In this section, youโ€™ll find a diverse array of categories and types to explore:

  • Song Types ๐ŸŒฑ๐ŸŽต: Discover a wide range of songs tailored to different styles:
    • Pop ๐ŸŒŸ: Catchy melodies and vibrant rhythms that are in vogue.
    • Rock ๐ŸŽธ: Energetic songs that make you move.
    • Classical ๐ŸŽป: Timeless compositions that delight the ears.
    • Jazz ๐ŸŽท: Sophisticated rhythms that transport you to another level.

  • Categories ๐Ÿ“š: Browse through various song categories to find exactly what you want to listen to:
    • Hits ๐ŸŽค: The most popular songs of the moment.
    • New Arrivals ๐Ÿ“…: The latest additions to our catalog.
    • Playlists ๐Ÿ“‹: Thematic selections for different moods and occasions.

  • Special Features โœจ: Take advantage of our advanced filtering and sorting options ๐Ÿ”. Customize your search based on genre, song type, or playlists to find the perfect track for any occasion.

Once you find a song that excites your taste buds, check out the detailed view ๐Ÿ“‹. Here youโ€™ll get all the essential information, including the artist, album, release year, and any interesting facts, so you can enjoy it to the fullest.

The Songs section is crafted to be your personal musical hub, where every melody is an adventure waiting to be discovered. Whether youโ€™re exploring new genres or searching for your next favorite track, this section has everything you need to make your musical experience enjoyable and rewarding. ๐ŸŒŸ๐Ÿš€

Song Details ๐ŸŽถโœจ

When you explore a song on MelodiqTV, youโ€™ll unlock a wealth of information to elevate your music experience. Our Song Detail Screen provides all the essential details and interactive features to ensure you enjoy every moment of your favorite tunes.

What Youโ€™ll Find in the Song Details:

  • Song Overview ๐Ÿ“: Get a quick glance at the song, including a description, artist information, release date, and duration so you know what to expect from the track.

  • Mood and Genre ๐ŸŽต: See the mood and genre tags to match your listening preference and explore similar music.

  • Lyrics ๐Ÿ“œ: Dive into the full lyrics of the song and sing along or reflect on the words as you enjoy the music.

  • Related Songs ๐ŸŽง: Discover other tracks by the same artist or within the same genre, curated to complement the song you're currently enjoying.

  • Music Video ๐ŸŽฅ: Prefer to watch the official video? Play the music video directly from the detail screen for a full audio-visual experience.

Interactive Features ๐ŸŽ›๏ธ

The song details go beyond just informationโ€”here are the interactive options youโ€™ll enjoy:

  • Add to Favorites โค๏ธ: Found a song you love? Save it to your personal favorites and access it anytime with ease.

  • Detailed Artist Info ๐Ÿ‘จโ€๐ŸŽค: Curious about the artist? Dive into their profile, discover their discography, and explore more tracks and albums.

  • Share the Song ๐Ÿ“ฒ: Share your favorite music with friends and family via social media or messaging, so they can enjoy the tunes too.

  • Rate the Song โญ: Share your opinion by rating the song and see what other listeners think.

  • More Options ๐ŸŽ›๏ธ: From tweaking your preferences to exploring artist insights, you can access additional features to enhance your listening experience.

With all these features at your fingertips, the Song Detail Screen is designed to make listening interactive, enjoyable, and engaging. Whether you're reading the lyrics, checking out the artist, or sharing the track, everything you need is just a tap away!


Favorites Section ๐ŸŒŸ

Welcome to the Favorites section, your personal music collection! Here you can keep all your cherished tracks just a tap away. ๐ŸŽถโœจ This section is designed to make your music exploration even more enjoyable by providing quick access to the songs you love most.

Whatโ€™s in the Favorites Section?

  • Quick Access: Instantly view all the songs youโ€™ve marked as favorites, so you can easily revisit and enjoy your top picks without searching again. โค๏ธ
  • Detailed View: Tap on any favorite song to dive straight into its details, from lyrics to artist information, with a seamless experience. ๐Ÿ“‹
  • Easy Listening: With one click, you can start playing any of your favorite tracks instantly. Enjoy a personalized and streamlined listening experience! ๐ŸŽง

Make your music journey more efficient and personalized by keeping your favorite songs close at hand. Enjoy effortless access to the tracks you love most, and savor every moment of your music with ease! ๐ŸŒŸ๐ŸŽถ


Music Player ๐ŸŽฅ๐ŸŽถ

The Music Player on MelodiqTV is where your favorite tracks come to life. Designed to provide a seamless and immersive experience, it ensures you stay engaged and entertained throughout your listening journey.

  • High-Quality Audio ๐ŸŽง: Enjoy your songs in crystal-clear quality with support for various audio formats. The player adapts to provide the best experience based on your connection and preferences.

  • Player Controls โฏ๏ธ: Effortlessly navigate through your music with intuitive controls. You can play, pause, rewind, or skip tracks to stay in control of your listening session.

  • On-Screen Lyrics ๐Ÿ“: Follow along with synchronized lyrics that appear on-screen as the music plays, making it easy to sing along or get immersed in the story behind the song.

  • Progress Tracking โณ: Visual progress bars show you how much of the song you've listened to and how much remains, helping you stay tuned in to your favorite parts.

  • Full-Screen Mode ๐Ÿ“ฑ: Switch to full-screen mode to fully immerse yourself in the music and lyrics, minimizing distractions for a more focused experience.

The Music Player on MelodiqTV is your ultimate listening companion, ensuring every track is not only enjoyable but also fun and interactive. Whether you're chilling out with your favorite playlist or exploring new tracks, the player has everything you need for an exceptional music experience. ๐ŸŽถ๐ŸŒŸ

Subscription Options ๐ŸŒŸ๐ŸŽถ

In the Subscriptions section, discover flexible plans designed to enhance your music experience on MelodiqTV! ๐ŸŽ‰โœจ Whether youโ€™re a casual listener or a music enthusiast, our subscription options offer exclusive access to premium tracks and features that will take your music journey to the next level.

Hereโ€™s what you need to know:

  • Choose Your Plan ๐Ÿ—“๏ธ: Pick the subscription that fits your listening habits. We offer three options: 1 month, 6 months, or 12 months. Each plan provides unlimited access to a wide range of premium songs, albums, and artists.

  • Enjoy Discounts ๐Ÿ’ฐ: The longer you subscribe, the more you save! Opt for a longer subscription period and enjoy special discounts. Itโ€™s a win-winโ€”more savings and more music at your fingertips!

  • Unlock Premium Tracks ๐Ÿ”“: With a subscription, youโ€™ll gain exclusive access to high-quality, premium tracks and albums not available in the free plan. Enjoy curated playlists, exclusive artist interviews, and content that will enhance your love for music.

The Subscriptions section ensures that your music journey is both rewarding and flexible. With the option to choose your plan and the added value of premium content, youโ€™ll stay inspired and engaged, enjoying a seamless music experience. ๐ŸŽถ๐Ÿš€


Settings ๐Ÿ› ๏ธ๐ŸŽง

The Settings section on MelodiqTV is your personal music control center, where you can customize your app experience to match your preferences. ๐ŸŽต Hereโ€™s what you can adjust:

  • Adjust Language ๐ŸŒ: Choose the language youโ€™re most comfortable with. Whether you prefer English, Spanish, or another language, MelodiqTV will adapt to your choice for a seamless music experience.

  • Select Audio Quality ๐ŸŽง: Control your music streaming experience by selecting the audio quality. Choose from standard, high-quality, or lossless formats depending on your internet connection and device capabilities.

  • Manage Subscriptions ๐Ÿ’ณ: Review and adjust your subscription plan. You can easily change your plan, upgrade, or even cancel your subscription if needed, keeping you in control of your music journey.

  • Learn About Us ๐ŸŽค: Discover more about the team behind MelodiqTV and our mission to bring you the best music experience possible. Learn about the artists and curators that power the platform.

  • Log Out ๐Ÿšช: Easily log out or switch accounts when needed. Keep your profile secure and manage your preferences with a few simple taps.

The Settings section ensures you have full control over your music experience. From language preferences to audio quality, everything is designed to provide a personalized and seamless listening journey. ๐ŸŽถ๐Ÿ› ๏ธ

Contribution

Contributions to MelodiqTV Android are highly encouraged! If you're interested in adding new features, resolving bugs, or enhancing the project's functionality, please feel free to submit pull requests.

Credits

MelodiqTV is developed and maintained by Sergio Sรกnchez Sรกnchez (Dream Software). Special thanks to the open-source community and the contributors who have made this project possible. If you have any questions, feedback, or suggestions, feel free to reach out at dreamsoftware92@gmail.com.

Acknowledgements ๐Ÿ™

We express our deep appreciation to Freepik for generously providing the resources used in this project.

Icons and images takes from Freepik from www.flaticon.es'

A heartfelt thank you to the creators of the JetFit repository for providing such an invaluable starting point for Jetpack Compose for TV. Your work has been incredibly inspiring and instrumental in shaping the development of this project.

The resources, examples, and insights provided in the JetFit repository served as a foundational reference, enabling us to build and expand upon your excellent groundwork. Your contributions have significantly accelerated our journey and enriched our understanding of creating seamless TV applications using Jetpack Compose. ๐Ÿ“บโœจ

Visitors Count

Please Share & Star the repository to keep me motivated.

License โš–๏ธ

This project is licensed under the MIT License, an open-source software license that allows developers to freely use, copy, modify, and distribute the software. ๐Ÿ› ๏ธ This includes use in both personal and commercial projects, with the only requirement being that the original copyright notice is retained. ๐Ÿ“„

Please note the following limitations:

  • The software is provided "as is", without any warranties, express or implied. ๐Ÿšซ๐Ÿ›ก๏ธ
  • If you distribute the software, whether in original or modified form, you must include the original copyright notice and license. ๐Ÿ“‘
  • The license allows for commercial use, but you cannot claim ownership over the software itself. ๐Ÿท๏ธ

The goal of this license is to maximize freedom for developers while maintaining recognition for the original creators.

MIT License

Copyright (c) 2024 Dream software - Sergio Sรกnchez 

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

MelodiqTV ๐ŸŽถ๐Ÿ“บ is a music and video streaming app for Android TV. Powered by Firebase ๐Ÿ”ฅ for real-time data and secure authentication, it uses Clean Architecture and MVI ๐Ÿ›๏ธ. The UI is built with Jetpack Compose for TV ๐Ÿ“บ for a smooth, modern experience optimized for large screens.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages