aardaisenkul / Countries

Countries App

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Logo

Countries App

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

The project lists 10 different countries for users. By accessing the details of the desired country, the user encounters the flag of that country, the country code and the button for more details. In addition, the user can favorite/unfavorite the countries they wanted to and can list and remove them within the saved page in the tabbar.

(back to top)

Built With

(back to top)

Getting Started

After install required pod files, you can directly launch the app in XCode. After opening the location where the folder is located, it will be enough by following the steps below

Installation

  1. Get a free API Key at RapidAPI
  2. Clone the repo
    git clone https://github.com/aardaisenkul/Countries.git
  3. Install pod packages
    pod install
    If you have macbook with M1 Chip you can install pod files wia
    sudo arch -x86_64 gem install ffi
     arch -x86_64 pod install
  4. Enter your API in RapidAPI
    let API_KEY = 'ENTER YOUR API';

(back to top)

Requirements

  • Xcode 13
  • Swift 5
  • IOS 15.x

Visual

Demo
Preview

(back to top)

Roadmap

  • With the help of a custom cell, the cell with the star icon and the name of the required country was designed.
  • This cell has been added to the home page, which is the first option in the tab bar.
  • With a similar design of the home page, it was possible to sort the cells which is saved.
  • Thanks to 2 different methods added to the custom cell, adding to favorites and going to country details actions are provided.
  • With a design similar to the saved page, it was possible to sort the cells recorded in the plain.
  • Started to design and code detail page
    • Thanks to SDWebImageSVGCoder, the necessary image was fetched and placed on the detail page, which was a challenging detail as I had not used pod packages before.
    • Other datas are fetched such as wikicode and country name from the relevant API. More info button has been added and it redirects with the help of wikicode to the wikipedia.
    • The country name is fixed in the header.
    • Finally, the star button on the right of the header was designed and coded to add that country to favorites.

(back to top)

Features

  1. CoreData is used for handling to add/remove countries to the saved list
  2. Data layer(repository): includes model needs for api logic tabbar pages
  3. ViewModel layer: includes some methods and logic that can be useful
  4. View layer: includes of view controllers and storyboards

(back to top)

Things That Could Be Better

  1. Kazakhistan country flag size can be optimized because its size or type are not like others
  2. Instant refresh could be better on saved page when user interacts with favorite process.
  3. Some performance improvements can be made to make app durable

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Ali Arda İsenkul - @LinkedIn - ardaisenkul@hotmail.com

Project Link: https://github.com/aardaisenkul/Countries

(back to top)

About

Countries App

License:MIT License


Languages

Language:Swift 99.0%Language:Ruby 1.0%