{"id":25168457,"url":"https://github.com/2gpb/upnews","last_synced_at":"2025-04-03T19:17:23.659Z","repository":{"id":275120567,"uuid":"924056175","full_name":"2Gpb/UpNews","owner":"2Gpb","description":"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.","archived":false,"fork":false,"pushed_at":"2025-02-05T15:20:12.000Z","size":67,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T07:17:45.324Z","etag":null,"topics":["network-layer","svip-architecture","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2Gpb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-29T10:38:41.000Z","updated_at":"2025-02-05T15:20:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"e430644c-fa9d-4e18-837e-e5298812bbd4","html_url":"https://github.com/2Gpb/UpNews","commit_stats":null,"previous_names":["2gpb/upnews"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Gpb%2FUpNews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Gpb%2FUpNews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Gpb%2FUpNews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Gpb%2FUpNews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2Gpb","download_url":"https://codeload.github.com/2Gpb/UpNews/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247061891,"owners_count":20877176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["network-layer","svip-architecture","swift"],"created_at":"2025-02-09T07:17:27.620Z","updated_at":"2025-04-03T19:17:23.649Z","avatar_url":"https://github.com/2Gpb.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UpNews\n\n### Features:\n- **Article Management** – The logic is divided between layers of the SVIP architecture, ensuring code structure and simplifying maintenance.\n\n- **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.\n\n- **Displaying Article List** – Custom news cells with images, titles, and descriptions have been implemented. Efficient reuse of cells and optimized layout are ensured.\n\n- **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.\n\n- **Refreshing News** – The news can be refreshed by pulling down on the top-most cell, automatically reloading the latest articles from the source.\n  \n- **Shimmer Animation Implementation** – The animation is implemented using CAGradientLayer to create a smooth gradient movement effect, simulating the content loading process.\n  \n- **Image Caching** – Image caching is implemented using NSCache, enabling efficient storage and loading of images in memory, improving app performance and reducing load times.\n  \n- **Article Viewing** – News articles are opened through SFSafariViewController.\n  \n- **Sharing Feature** – A sharing option has been implemented through UIActivityViewController. Users can long-press on a cell to open the sharing menu.\n\n\n### Architecture\n**SVIP (VIPER)** – Clear separation of components:\n  - **View** – Displays the interface and interacts with the user.\n  - **Interactor** – Business logic of the application.\n  - **Presenter** – Prepares data for UI \u0026 implements RoutingLogic.\n  - **Router** – Manages screen transitions.\n  - **Worker** – Handles data processing and network requests.\n\n\n### Technologies\n- UIKit | AutoLayout\n- URLSession\n- GCD\n- SVIP (VIPER)\n- SOLID\n- SafariServices\n\n# Visual\n\u003cimg src=\"https://github.com/user-attachments/assets/848c4ccc-75a4-4eb7-9cf4-186e2bc4fd5f\" width=\"358.33\"/\u003e\n\u003cimg width=\"358.33\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2d787eff-7a3c-40d4-89c2-72fb70d6f949\" /\u003e\n\u003cimg width=\"358.33\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bccfb05b-6b9d-4e9f-9f1a-f893fa54c9a6\" /\u003e\n\u003cimg width=\"358.33\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d907c4ed-0fd9-4916-a54d-fc684a993e28\" /\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2gpb%2Fupnews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2gpb%2Fupnews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2gpb%2Fupnews/lists"}