Skip to content

Latest commit

 

History

History
173 lines (133 loc) · 6.05 KB

File metadata and controls

173 lines (133 loc) · 6.05 KB

Android Daily

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.

Preview

Home UI Drawer UI

Professional Project Description

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.

Architecture

The application follows a Feature-based MVI Clean Architecture approach.

Structure

The project is intentionally split into two complementary areas:

  • newsapp The portfolio-facing application layer. This contains the modern app shell, typed Nav3 navigation, feature screens, state handling, and the clean-architecture style core, data, domain, and feature packages.
  • androidessentials The 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.
  • learning The in-app learning catalog that surfaces Android, coroutines, and Compose concepts through a mobile UI so the example content is browsable inside the app.
  • compose Dedicated Compose example files with doc-comment-heavy explanations for state, effects, basics, and animations.
  • storage Storage-specific examples and references kept separate from the main showcase app flow.
  • ui Shared 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.

MVI Principles Used

  • each feature exposes explicit UI state
  • user actions are represented as intents/events
  • view models translate intents into state updates
  • repositories expose Flow for reactive state observation
  • use cases isolate read/write operations from feature code

Clean Architecture Principles Used

  • 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

Technologies Used

Currently implemented

  • Kotlin
  • Jetpack Compose
  • Material 3
  • Navigation 3 (Nav3)
  • Coroutines
  • Flow
  • ViewModel
  • WorkManager

Planned next

  • Hilt for dependency injection
  • SQLDelight for persistence

Feature List

  • 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

Updated Project Structure

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

UI/UX Improvements Included

  • 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

Installation

  1. Clone the repository.
  2. Open the project in Android Studio.
  3. Let Gradle sync finish.
  4. Run the app configuration on an emulator or Android device running Android 7.0 or newer.

Run Commands

Build the project:

./gradlew :app:compileDebugKotlin

Install the debug build:

./gradlew :app:installDebug

Screenshots for README

The README uses generated preview assets stored in:

  • docs/screenshots/home-preview.png
  • docs/screenshots/drawer-preview.png

The generated launcher icon preview shown above uses:

  • app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

Future Improvements

  • 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

Notes

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.