Hechio / WanderView

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hechio Dash WanderView - Tourist News Feed app

Test for Senior iOS Engineer position.

Table of Contents

Prerequisite

This app has been built using Xcode 14. To Run the app, go to the project directory, under Signing $ Capabilities, and add your developer team account.

The App

The app gets a list of news feeds and shows tourist news articles from paginated responses from News Feed API. It also has a tab displaying the tourists' list Tourists API with the option of viewing a tourist profile on tap from Tourist API.

Languages

The project has been written in Swift language and design using UIKit. It uses URLSession with Combine for network requests.

Architecture

The project is meticulously crafted adhering to the MVVM (Model-View-ViewModel) architectural pattern, a cornerstone of modern app development. MVVM fosters the decoupling of concerns, paving the way for simplified testing and maintenance.

MVVM implementation

* Data Initialization: Upon the initial launch of the app, the backend API service is summoned to retrieve the essential data. This data is then judiciously stored within the local realm of the application, meticulously leveraging the Realm database. This strategic approach minimizes subsequent network calls, resulting in a smoother user experience.

* Offline Resilience: Foreseeing network connectivity fluctuations or potential API service interruptions, the application is engineered with robustness in mind. In scenarios where internet connectivity is unavailable or the API service encounters a hiccup, the application seamlessly switches gears. The stored data within the local cache becomes the go-to source of information, ensuring that the user experience remains uninterrupted.

* ViewModel Dynamics: The ViewModel plays a pivotal role in this architectural composition. Responsible for orchestrating the interaction between the Model (data) and the View (UI), the ViewModel diligently updates the UI in response to data changes. This not only enriches the user experience but also facilitates the reactive nature of the app's interface.

Incorporating these technical strategies ensures that the project aligns with contemporary architectural best practices, fostering modularity, testability, and overall software quality.

Data Persistance

Data persistence done using Realm DB over Core Data or other methods because of its superior performance, intuitive integration with Swift, and real-time data synchronization capabilities. The simplified API and cross-platform compatibility of Realm further aligned with our project's needs. Additionally, the strong community support and active development reassured us about its future. These factors collectively made Realm DB a more suitable choice for our iOS app's data persistence.

Testing and Testing

All tests are located within the iOS Test package. The execution of these tests is handled using XCTest. To run tests using fastlane run fastlane test command in your CL. Test automation has also been demonstrated using CircleCI.

ScreenShots

Video Recording of the App

Screen.Recording.2023-08-18.at.14.23.41.mov

About


Languages

Language:Swift 90.1%Language:HTML 9.5%Language:Ruby 0.4%