Problem

The Bank Mandiri project-based internship final task required a maintainable Android application that remained usable across slow, failed, and paginated network responses.

Implementation

The app separates data, domain, and UI responsibilities with MVVM. Coroutines and StateFlow expose predictable screen states while the repository manages remote news data.

  • Pagination and URL deduplication
  • Pull to refresh
  • Safe network and error states
  • Article detail flow
  • Unit testing
  • MVVM architecture

Key technical decisions

  • Modeled loading, success, and error as explicit UI states
  • Deduplicated articles by URL across pages
  • Separated pagination behavior for direct unit testing

Security considerations

  • Uses HTTPS API transport
  • Avoids rendering remote HTML inside the application
  • Keeps API configuration out of committed source