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

https://github.com/2gpb/upnews

This iOS app uses SVIP (VIPER) architecture with a network layer to fetch and process news. The project is structured for scalability and clean separation of concerns.
https://github.com/2gpb/upnews

network-layer svip-architecture swift

Last synced: about 1 year ago
JSON representation

This iOS app uses SVIP (VIPER) architecture with a network layer to fetch and process news. The project is structured for scalability and clean separation of concerns.

Awesome Lists containing this project

README

          

# UpNews

### Features:
- **Article Management** – The logic is divided between layers of the SVIP architecture, ensuring code structure and simplifying maintenance.

- **API Interaction** – A network layer has been implemented, which includes error handling, asynchronous work via URLSession with closures, support for various types of requests, and data serialization/deserialization.

- **Displaying Article List** – Custom news cells with images, titles, and descriptions have been implemented. Efficient reuse of cells and optimized layout are ensured.

- **Loading New Articles** – New articles are automatically loaded when the user scrolls to the bottom of the list, ensuring that fresh content is always available as they browse through the news.

- **Refreshing News** – The news can be refreshed by pulling down on the top-most cell, automatically reloading the latest articles from the source.

- **Shimmer Animation Implementation** – The animation is implemented using CAGradientLayer to create a smooth gradient movement effect, simulating the content loading process.

- **Image Caching** – Image caching is implemented using NSCache, enabling efficient storage and loading of images in memory, improving app performance and reducing load times.

- **Article Viewing** – News articles are opened through SFSafariViewController.

- **Sharing Feature** – A sharing option has been implemented through UIActivityViewController. Users can long-press on a cell to open the sharing menu.

### Architecture
**SVIP (VIPER)** – Clear separation of components:
- **View** – Displays the interface and interacts with the user.
- **Interactor** – Business logic of the application.
- **Presenter** – Prepares data for UI & implements RoutingLogic.
- **Router** – Manages screen transitions.
- **Worker** – Handles data processing and network requests.

### Technologies
- UIKit | AutoLayout
- URLSession
- GCD
- SVIP (VIPER)
- SOLID
- SafariServices

# Visual

image
image
image