{"id":13640211,"url":"https://github.com/v1tzor/GlobalNewsApp","last_synced_at":"2025-04-20T02:32:58.948Z","repository":{"id":64838396,"uuid":"578705278","full_name":"v1tzor/GlobalNewsApp","owner":"v1tzor","description":"A simple application for viewing news with multimodule architecture, Retrofit, MVVM, paging, unit tests","archived":false,"fork":false,"pushed_at":"2022-12-26T17:35:28.000Z","size":6067,"stargazers_count":15,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-09T10:38:58.345Z","etag":null,"topics":["android","clean-architecture","coroutines","kotlin","multimodule","paging-library","retrofit2","room","unittest"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v1tzor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-15T17:28:19.000Z","updated_at":"2024-10-24T19:41:34.000Z","dependencies_parsed_at":"2023-01-31T00:45:55.660Z","dependency_job_id":null,"html_url":"https://github.com/v1tzor/GlobalNewsApp","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v1tzor%2FGlobalNewsApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v1tzor%2FGlobalNewsApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v1tzor%2FGlobalNewsApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v1tzor%2FGlobalNewsApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v1tzor","download_url":"https://codeload.github.com/v1tzor/GlobalNewsApp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249840693,"owners_count":21332925,"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":["android","clean-architecture","coroutines","kotlin","multimodule","paging-library","retrofit2","room","unittest"],"created_at":"2024-08-02T01:01:08.893Z","updated_at":"2025-04-20T02:32:58.264Z","avatar_url":"https://github.com/v1tzor.png","language":"Kotlin","funding_links":[],"categories":["🧠 Productivity \u0026 Organization"],"sub_categories":["📖 Readers"],"readme":"![](https://i.imgur.com/l8J6ryt.png)\n\n# GlobalNewsApp\n\nA simple application for viewing news with multimodule architecture, MVVM, paging, unit tests.\n\n## Installation\n\nGlobalNews requires a minimum API level of 23. Clone the repository. To request news, you will need an API key, i.e. `global_news_api_key` from  [GNews](https://gnews.io/). If you don't have an account yet, you will need to create one to request an API key.\n\nIn the root directory of your project, inside the local.properties file (create it if it is not available), include the following lines:\n\n```properties\n# Get this from GNews\nglobal_news_api_key=\u003cinsert\u003e\nglobal_news_base_url=\"https://gnews.io/api/v4/\"\n```\n\n## Technologies used:\n\n* [Kotlin](https://kotlinlang.org/) a statically typed, object-oriented programming language running on top of Java Virtual Machine and developed by JetBrains.\n* [MVVM (Jetpack ViewModel + LiveData)](https://developer.android.com/topic/architecture) an architectural pattern that improves the separation of tasks, it allows you to separate the logic of the user interface from the business logic of the app.\n* [Multi module]() allows you to split the application into features. A feature is a logically complete, maximally independent program module that solves a specific user problem, with clearly defined external dependencies, and which is relatively easy to reuse in another program.\n* [Single Activity]() an architecture that has only one activity acting as a container for fragments\n* [Paging Library](https://developer.android.com/topic/libraries/architecture/paging/v3-overview) helps you load and display small chunks of data at a time.\n* [Dagger 2](https://dagger.dev/dev-guide/) for dependency injection.\n* [Retrofit](https://square.github.io/retrofit/) a REST Client for Android which makes it relatively easy to retrieve and upload JSON (or other structured data) via a REST based webservice.\n* [Room](https://developer.android.com/topic/libraries/architecture/room) persistence library which provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.\n* [Cicerone](https://github.com/terrakok/Cicerone) is a lightweight library that makes the navigation in an Android app easy.\n* [Material Design 3](https://material.io/develop/android/docs/getting-started/) an adaptable system of guidelines, components, and tools that support the best practices of user interface design.\n* [View Binding](https://developer.android.com/topic/libraries/view-binding) is a feature that allows you to more easily write code that interacts with views..\n* [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) lightweight threads. This allows us to write asynchronous non-blocking code in a consistent manner\n* [Flow](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) an addition to Kotlin coroutines for asynchronous processing of data streams that are executed sequentially.\n* [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) to store and manage UI-related data in a lifecycle conscious way.\n* [Unit tests](https://developer.android.com/studio/test/test-in-android-studio) to test individual parts of the application.\n* [Android KTX](https://developer.android.com/kotlin/ktx) which helps to write more concise, idiomatic Kotlin code.\n* [Shimmer](https://github.com/facebook/shimmer-android) is an Android library that provides an easy way to add a shimmer effect to any view in your Android app.\n\n## License\nCopyright (C) 2022 Stanislav Aleshin dev.aleshin@gmail.com\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv1tzor%2FGlobalNewsApp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv1tzor%2FGlobalNewsApp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv1tzor%2FGlobalNewsApp/lists"}