wcountries lists all countries of the world and lets the user to view their details. Also allows users to filter the various countries by continent and/or language.
The app is written using Swift 5.3, iOS 14.4 as deployment target and MVVM + Coordinators patterns. UI is created without the use of Storyboard and Xib.
wcountries uses the restcountries.eu API for countries data and flagcdn.com API for flag images.
In the project root you can find the Adobe XD mockup project, created before developing the app to have a guideline.
wcountries starts by showing all countries. When the user taps on a country the app shows its details (name, alpha3Code, continent, currency symbol, call number, native name, capital, population, latitude and longitude, area, language, timezone and neighboring countries) and if he taps on a neighboring country the detail of it will be opened. User can also filter countries by continent and/or language.
API requests and images are cached using URLCache, so the app works even offline with cached data.
No external library were used, this because I decided to take it as a challenge to improve my skills and better explore some aspects such as caching requests and images.
I wrote some tests for ViewModels.