Android Daily is a polished Android showcase application that transforms a practice codebase into a portfolio-ready news-style experience. The app demonstrates modern Kotlin and Jetpack Compose development with a feature-based structure, Nav3 typed navigation, gradient-driven UI, article detail flows, favorites, profile, and in-app concept demos.
Android Daily is designed as a modern Android portfolio project with a strong visual identity and a clean implementation strategy. It combines a premium Material 3 interface, feature-based navigation, explicit UI state handling, and educational example packages so the codebase works both as a showcase app and as a structured learning sandbox.
The application follows a Feature-based MVI Clean Architecture approach.
The project is intentionally split into two complementary areas:
newsappThe portfolio-facing application layer. This contains the modern app shell, typed Nav3 navigation, feature screens, state handling, and the clean-architecture stylecore,data,domain, andfeaturepackages.androidessentialsThe practice and reference area. This contains topic-based Android examples such as activities, intents, services, broadcast receivers, content providers, coroutines, fragments, permissions, and WorkManager with doc comments and runnable examples.learningThe in-app learning catalog that surfaces Android, coroutines, and Compose concepts through a mobile UI so the example content is browsable inside the app.composeDedicated Compose example files with doc-comment-heavy explanations for state, effects, basics, and animations.storageStorage-specific examples and references kept separate from the main showcase app flow.uiShared design system, theme, gradients, and reusable UI helpers used across the app.
In short: newsapp is the polished showcase product, while androidessentials and the supporting example packages preserve the original practice-lab purpose of the repository.
- each feature exposes explicit UI state
- user actions are represented as intents/events
- view models translate intents into state updates
- repositories expose
Flowfor reactive state observation - use cases isolate read/write operations from feature code
- UI does not directly own data source logic
- domain contracts are separated from repository implementations
- feature packages focus on screen behavior, not shared infrastructure
- reusable visual components are kept separate from feature state logic
- Kotlin
- Jetpack Compose
- Material 3
- Navigation 3 (Nav3)
- Coroutines
- Flow
- ViewModel
- WorkManager
- Hilt for dependency injection
- SQLDelight for persistence
- Typed Nav3 back stack with article detail navigation
- Drawer access to Android, Coroutines, and Compose concept catalogs
- Modern Compose navigation drawer
- Home screen with editorial-style article cards
- Favorites screen with empty-state UX
- Profile screen with app summary and quick actions
- Compose Basics Demo screen accessible from the drawer
- Gradient-based visual system for the app shell and feature surfaces
- Responsive spacing and modern typography
- Loading states, empty states, and error-ready layout patterns
- Standalone Android and Compose concept/example packages
- Existing practice screen preserved for experimentation and learning
be/business
├── AppShell.kt
├── MainActivity.kt
├── androidessentials
│ ├── activities
│ ├── broadcast
│ ├── composables
│ ├── contentprovider
│ ├── coroutines
│ ├── fragments
│ ├── intents
│ ├── permissions
│ ├── services
│ └── workmanager
├── compose
├── learning
│ ├── android
│ ├── compose
│ ├── coroutines
│ ├── shared
│ └── ui
├── newsapp
│ ├── core
│ ├── data
│ ├── domain
│ ├── feature
│ └── navigation
├── storage
└── ui
├── components
├── theme
└── viewutils
- modern Material 3 styling
- stronger card hierarchy for article presentation
- custom gradients for header and app shell surfaces
- smoother visual transitions and cleaner drawer flow
- better spacing, typography, and information grouping
- user-friendly empty and loading states
- improved screen legibility for both showcase and learning use
- Clone the repository.
- Open the project in Android Studio.
- Let Gradle sync finish.
- Run the
appconfiguration on an emulator or Android device running Android 7.0 or newer.
Build the project:
./gradlew :app:compileDebugKotlinInstall the debug build:
./gradlew :app:installDebugThe README uses generated preview assets stored in:
docs/screenshots/home-preview.pngdocs/screenshots/drawer-preview.png
The generated launcher icon preview shown above uses:
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
- integrate Hilt across repositories, use cases, and feature view models
- replace in-memory favorites with SQLDelight persistence
- add remote networking and image loading for live articles
- add UI tests and snapshot coverage for key screens
- introduce adaptive layouts for tablets and foldables
- move learning/example packages into dedicated modules if the project grows further
Android Daily is intentionally positioned between a production-inspired showcase and a learning workspace. That balance makes it useful for demos, interviews, experimentation, and continued Android practice without throwing away the original educational purpose of the project.

