CariInfoApp adalah aplikasi portal berita berbasis Jetpack Compose (Material 3) yang menampilkan berita terkini dari berbagai sumber.
Dibangun menggunakan arsitektur MVVM + Repository Pattern, dengan dukungan offline cache (Room), Hilt DI, dan modern UI Compose.
| Layer | Teknologi |
|---|---|
| UI | Jetpack Compose, Material 3, Pull-to-Refresh |
| Architecture | MVVM, Repository Pattern |
| Async / State | Kotlin Coroutines, Flow, StateFlow |
| Dependency Injection | Hilt |
| Networking | Retrofit + OkHttp |
| Database (Offline Cache) | Room |
| Image Loading | Coil |
| Navigation | Navigation Compose |
| Theming | Material 3 + Dark Mode Toggle |
| UI Skeleton | Accompanist Placeholder (Shimmer) |
-
📰 Home Screen
- Menampilkan daftar berita dalam bentuk Card Compose (gambar, judul, penulis, tanggal, deskripsi).
- Swipe to Refresh (Material 3 PullToRefreshBox) untuk memuat ulang data.
- Shimmer Loading saat data dimuat pertama kali.
- Empty State dan Error State dengan tampilan modern.
- Toggle Dark / Light Mode langsung dari TopBar.
-
📄 Detail Screen
- Menampilkan detail lengkap artikel (gambar header, judul, penulis, tanggal, deskripsi).
- Tombol Baca Selengkapnya membuka tautan di browser.
- Icon Share di TopBar untuk membagikan berita.
- Konten dapat di-scroll sepenuhnya.
-
🌙 Tema & Tipografi
- Palet warna konsisten Material 3.
- Typography:
titleLarge,bodyMedium,labelSmall.
-
💾 Offline Mode
- Data berita disimpan di database lokal Room.
- Jika offline, aplikasi tetap dapat menampilkan data terakhir.
UI (Jetpack Compose)
↓
ViewModel (InfoViewModel)
↓
Repository (InfoRepository)
↓
Data Sources (Retrofit + Room)
com.example.cariinfoapp
├── App.kt
├── MainActivity.kt
├── data
│ ├── database
│ │ └── model/ArticleModel.kt
│ ├── local
│ │ ├── ArticleMapper.kt
│ │ ├── InfoDAO.kt
│ │ ├── InfoDatabase.kt
│ │ └── InfoEntity.kt
│ └── network
│ ├── client/InfoClient.kt
│ ├── repository/InfoRepository.kt
│ ├── response/InfoResponse.kt
│ └── service/InfoAPIService.kt
├── di
│ ├── DatabaseModule.kt
│ └── NetworkModule.kt
├── ui
│ ├── features
│ │ ├── home
│ │ │ ├── HomeScreen.kt
│ │ │ ├── HomeContent.kt
│ │ │ ├── HomeTopBar.kt
│ │ │ └── components/ArticleCard.kt
│ │ ├── detail
│ │ │ ├── DetailScreen.kt
│ │ │ ├── DetailContent.kt
│ │ │ ├── DetailTopBar.kt
│ │ │ ├── DetailEmptyView.kt
│ │ │ └── components/DetailComponents.kt
│ │ └── model/InfoViewModel.kt
│ ├── navigation
│ │ ├── AppNavHost.kt
│ │ └── NavRoutes.kt
│ ├── state/UiState.kt
│ └── theme
│ ├── Color.kt
│ ├── MyColors.kt
│ ├── Theme.kt
│ └── Type.kt
└── utils/Constants.kt
| Home Screen Light | Home Screen Dark | Detail Screen Light | Detail Screen Dark |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
git clone https://github.com/username/CariInfoApp.git
cd CariInfoApp- Buka di Android Studio Giraffe atau lebih baru
- Pastikan internet aktif untuk memuat data API
- Jalankan pada emulator / perangkat fisik
MIT License © 2025 Ayash Abdus Syahiid



