Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bahertamer/countriesapp
A modularized iOS countries info app using Swift Concurrency & SwiftUI.
https://github.com/bahertamer/countriesapp
clean-architecture modularization mvvm swift swift-6 swift-package-manager swift-testing swiftui unit-testing
Last synced: 26 days ago
JSON representation
A modularized iOS countries info app using Swift Concurrency & SwiftUI.
- Host: GitHub
- URL: https://github.com/bahertamer/countriesapp
- Owner: BaherTamer
- License: mit
- Created: 2024-12-04T19:03:03.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-12-08T18:10:22.000Z (about 1 month ago)
- Last Synced: 2024-12-08T19:23:10.272Z (about 1 month ago)
- Topics: clean-architecture, modularization, mvvm, swift, swift-6, swift-package-manager, swift-testing, swiftui, unit-testing
- Language: Swift
- Homepage:
- Size: 623 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# πΊοΈ CountriesApp
An iOS countries info app using **Swift Concurrency** & **SwiftUI**. This project was developed as a hands-on practice to enhance my skills in **Swift 6**, **Unit Testing**, **Clean Architecture**, **MVVM-C Design Pattern**, and **Modularization**.
## π Features
* Fetch & display all countries in a list
* Fetch detailed info for certain country for details screen
## πΌοΈ Screenshots
| **Listing Screen** | **Details Screen** |
| ------------------ | ------------------ |
| ! | ! |
## βοΈ API
This project uses the [REST Countries](https://restcountries.com/) API 3.1.
## π οΈ Tech Stack
* Swift 6
* SwiftUI
* Swift Package Manager (SPM)
* Swift Testing for Unit Tests
* MVVM-C Design Pattern
* Clean Architecture
* Modularization
* Swift Concurrency
* String Catalog for Localization
## ποΈ Modules
* **Network Layer:** A module for handling network request logic. Built using Swift Concurrency and URLSession with Endpoint protocol mechanism.
* **Core Layer:** A module for encapsulating all the shared core files and extension.
* **Countries Module:** A module for countries features listing and details.
## β Unit Tests
* Network Service in Network Module
* View Models in Countries Module