Android Showcase 2.0
The Android Showcase 2.0 project is a comprehensive demonstration of modern Android app development techniques. It combines a variety of popular development tools, libraries, and methodologies to provide a complete, working example of a robust Android application. The project focuses on creating a modular, scalable, maintainable, and testable architecture, beneficial for large development teams and apps with long lifecycles.
Application Scope
At its core, Android Showcase is an app that uses the Last.fm music platform API to dynamically retrieve and display information about music albums. The app includes a few key screens:
- Album List Screen: Displays a list of albums retrieved from the Last.fm API.
- Album Detail Screen: Shows detailed information about a selected album.
- Profile Screen: Currently a work-in-progress (WiP).
- Favourites Screen: Also a work-in-progress.
Here are some images to give you a visual idea of what the app looks like:
Tech-Stack
The project embraces the best practices and popular libraries within the Android ecosystem, primarily utilizing Kotlin for development. Some key components:
- Kotlin: The primary language for app development, using features like Coroutines for background tasks and Flow for data management.
- Retrofit: For networking and API communications.
- Jetpack: Including Compose for UI, Room for local data storage, and Lifecycle-aware components.
- Koin: Manages dependency injection, making it easier to manage dependencies within the app.
Architecture
The architecture of the Android Showcase project follows a modular approach. Each module serves as a building block, much like a microservice, and can be developed independently. The project employs Clean Architecture principles, breaking down the application into layers that separate responsibilities, making it easier to manage and scale.
Feature Module Structure
Modules in the app are structured into three main layers:
- Presentation Layer: Handles how the app's UI is rendered, mixing MVVM and MVI patterns to keep UI logic separated from business logic.
- Domain Layer: Contains the business logic of the app, and is designed to be independent of other layers.
- Data Layer: Manages data handling, such as fetching from APIs and caching locally with Room.
Dependency Management
The project uses Gradle for dependency management, employing a centralized approach to keep the dependencies organized and easily manageable.
Continuous Integration (CI) Pipeline
Continuous Integration is set up using GitHub Actions, ensuring the code is always in a deployable state by running tests and verification steps on every pull request.
Getting Started
To run the project locally, you can either clone the repository using Android Studio's Git integration or through the command line. It’s recommended to install specific plugins like Detekt for code analysis to get the most out of the development setup.
Upcoming Improvements
The project is under active development, with continual refinements and enhancements being planned. Users and contributors can check GitHub for upcoming improvements and issues.
Inspiration
The project also draws inspiration from other high-quality Android projects, offering additional resources and tools for developers looking to improve their own projects.
In summary, the Android Showcase project is a robust example of modern Android development practices, offering a full suite of features and best practices that make it an excellent resource for learning and applying scalable app design.