Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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** |
| ------------------ | ------------------ |
| !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