iNews adalah aplikasi iOS Berita Internasional yang datanya didapatkan dari News API. Dibuat menggunakan SwiftUI, MVVM Design Pattern, dan Paw. Aplikasi ini memiliki fitur Search, Filter, Bookmark, Search History, Safari Browser, dan Sharing URL Berita.
iNews mengikuti pedoman design pattern dengan 3 komponen, yaitu Model, View, & ViewModel (MVVM). Berikut struktur file dan folder pada iNews:
.
├── iNewsApp.swift
├── ContentView.swift
├── news.json
├── info
├── API # API: API Service (Fetch Data)
│ └── NewsAPI.swift # Berisikan Fungsi Decode JSON File, Fetch (data & response) via URL Session, & Generate Berita (search & kategori)
│
├── Models # Models: API Data Declaration
│ ├── Article.swift # Berisikan Endpoints Data yang digunakan dari API
│ ├── Category.swift # Berisikan Kategori berita (Raw Data)
│ ├── DataStore.swift # Berisikan Concurrency Type untuk membantu menghindari masalah ketika terjadi update pada value
│ └── NewsAPIResponse.swift # Berisikan API Response Code (Handler)
│
├── ViewModel # ViewModel: Information Handler & CRUD Logic
│ ├── ArticleBookmarkViewModel.swift # Berisikan Fungsi CRUD untuk Fitur Bookmark
│ ├── ArticleNewsViewModel.swift # Berisikan Fungsi Load Berita dari API
│ └── ArticleSearchViewModel.swift # Berisikan Fungsi CRUD untuk Fitur Search dan Search History
│
└── Views # Views: Controller UI & Frontend Related (Show & Get)
├── ArticleListView.swift # Berisikan Tampilan Berita dalam Bentuk List
├── ArticleRowView.swift # Berisikan Tampilan Berita (Card)
├── BookmarkTabView.swift # Berisikan Tampilan Halaman Bookmark
├── EmptyPlaceholderView.swift # Berisikan Skeleton Card Berita (ketika loading / fetching data)
├── NewsTabView.swift # Berisikan Tampilan Halaman Beranda Aplikasi
├── RetryView.swift # Berisikan Tampilan Retry
├── SafariView.swift # Berisikan Fungsi untuk Membuka Browser Safari dari URL Berita
├── SearchHistoryListView.swift # Berisikan Komponen dari List Riwayat Pencarian
└── SearchTabView.swift # Berisikan Tampilan Halaman Search
- CRUD -> Kategori Berita, Bookmark, & Search History
- MVVM Design Pattern
- Search
- Filter Kategori
- Bookmark
- Sharing Berita URL
- Safari Browser
Untuk menggunakan repositori ini, ikutilah petunjuk penggunaan berikut dan pastikan git sudah terinstall pada komputer (semua perintah dilaksanakan pada cmd.exe
atau terminal
):
- Lakukan download .zip atau
clone
repositori dengan cara:
git clone https://github.com/dekapd99/iNews.git
- Buka project di Xcode dan copy API Key dari newsapi.org.
- Jika sudah, buka Project Navigation klik API > NewsAPI.swift, paste string pada variabel apiKey dengan API Key Anda.
- Build & Run
MIT License: Copyright (c) 2022 DK