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.
- Host: GitHub
- URL: https://github.com/2gpb/upnews
- Owner: 2Gpb
- Created: 2025-01-29T10:38:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-05T15:20:12.000Z (over 1 year ago)
- Last Synced: 2025-02-09T07:17:45.324Z (over 1 year ago)
- Topics: network-layer, svip-architecture, swift
- Language: Swift
- Homepage:
- Size: 65.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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
