{"id":22449908,"url":"https://github.com/turskyi/travelling","last_synced_at":"2026-04-17T08:02:29.540Z","repository":{"id":42008917,"uuid":"255069581","full_name":"Turskyi/Travelling","owner":"Turskyi","description":"Android mobile application. Showcase for using Room, view-model, clean-architecture, koin and coroutines.","archived":false,"fork":false,"pushed_at":"2025-07-19T03:31:08.000Z","size":39519,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-26T14:16:00.141Z","etag":null,"topics":["android","clean-architecture","coroutines","data-chart","databinding","firebase-distribution","github-actions","glide","koin","kotlin","loading-svg","lottie-animation","mvvm","photo-view","recyclerview","retrofit2","room-database","viewmodel","viewpager2","xml"],"latest_commit_sha":null,"homepage":"https://play.google.com/store/apps/details?id=ua.turskyi.travelling","language":"Kotlin","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/Turskyi.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":"2020-04-12T11:39:52.000Z","updated_at":"2025-07-19T03:30:31.000Z","dependencies_parsed_at":"2024-07-20T16:23:23.817Z","dependency_job_id":"fc2fee2a-ddd0-4bbe-815c-5decef6e836e","html_url":"https://github.com/Turskyi/Travelling","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Turskyi/Travelling","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2FTravelling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2FTravelling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2FTravelling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2FTravelling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Turskyi","download_url":"https://codeload.github.com/Turskyi/Travelling/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2FTravelling/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31920518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","data-chart","databinding","firebase-distribution","github-actions","glide","koin","kotlin","loading-svg","lottie-animation","mvvm","photo-view","recyclerview","retrofit2","room-database","viewmodel","viewpager2","xml"],"created_at":"2024-12-06T05:12:25.032Z","updated_at":"2026-04-17T08:02:29.496Z","avatar_url":"https://github.com/Turskyi.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua)\n[![Upload to Firebase App Distribution](https://github.com/Turskyi/Travelling/actions/workflows/android_ci.yml/badge.svg?event=push)](https://github.com/Turskyi/Travelling/actions/workflows/android_ci.yml)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/Turskyi/Travelling)\n\u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/m/Turskyi/Travelling\"\u003e\n\n# Travelling\n\nAn Android mobile application, which gives a convenient way to collect all countries that you have\nvisited.\n\n## PROJECT SPECIFICATION\n\n• Programming language: [Kotlin](https://kotlinlang.org/);\n\n• SDK: [Android](https://developer.android.com/studio/intro);\n\n• Interface: [XML](https://developer.android.com/guide/topics/ui/declaring-layout);\n\n• State management approach:\n[ViewModel](https://developer.android.com/reference/androidx/lifecycle/ViewModel);\n\n• HTTP client: [Retrofit](https://square.github.io/retrofit/);\n\n• Database: [Room](https://developer.android.com/training/data-storage/room);\n\n• Dependency injection: [Koin](https://insert-koin.io/docs/reference/introduction);\n\n• Reactive programming: [Coroutines](https://developer.android.com/kotlin/coroutines);\n\n• Version control system: [Git](https://git-scm.com);\n\n• Git Hosting Service: [GitHub](https://github.com);\n\n• CI/CD: [GitHub Actions](https://docs.github.com/en/actions) is used to deliver new Android\nPackage (APK) to [Firebase App Distribution](https://firebase.google.com/docs/app-distribution)\nafter every push to the **dev** branch,\n[Visual Studio App Center](https://docs.microsoft.com/en-us/appcenter/) is used to\n[deliver](https://appcenter.ms/users/Turskyi/apps/Travelling/build/branches/master) new release\napp bundle to **Google Play** after every push to **master** branch;\n\n• App testing platforms:\n[Firebase App Distribution](https://appdistribution.firebase.dev/i/c6a7f44dbe6de66d);\n\n• App store: [Google Play](https://play.google.com/store/apps/details?id=ua.turskyi.travelling);\n\n• Operating system: [Android](https://www.android.com/);\n\n• Embedded SDK: [Facebook Sharing](https://developers.facebook.com/docs/sharing/android);\n\n• Google Play services: [Location](https://developer.android.com/training/location);\n\n• Cloud services: [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging);\n\n• UI components:\n[Lottie](https://lottiefiles.com/what-is-lottie),\n[PhotoView](https://github.com/Baseflow/PhotoView),\n[ViewPager2](https://developer.android.com/jetpack/androidx/releases/viewpager2),\n[Data chart](https://weeklycoding.com/mpandroidchart/),\n[RecyclerView](http://www.recyclerview.org/),\n[Loading SVG](https://github.com/corouteam/GlideToVectorYou),\n[Glide](https://bumptech.github.io/glide/),\n[Data Binding](https://developer.android.com/topic/libraries/data-binding);\n\n• Api: https://restcountries.com/#api-endpoints-v2-all;\n\n• Architecture Components:\n[Paging](https://developer.android.com/topic/libraries/architecture/paging),\n[LiveData](https://developer.android.com/topic/libraries/architecture/livedata),\n[ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel);\n\n• Architectural pattern:\n\u003cbr\u003e\n\u003ca href=\"https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel\"\u003e\n\u003cimg src=\"documentation/android_model_view_viewmodel.jpeg\" width=\"800\" \u003e\n\u003c/a\u003e\n\u003c/br\u003e\n\n• Screenshots:\n\u003c!--suppress CheckImageSize --\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-085243.png\" width=\"200\"  alt=\"Screenshot of home page\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-085456.png\" width=\"200\"  alt=\"Screenshot of a page with list of countries\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-090524.png\" width=\"200\"  alt=\"Screenshot of a page with a flag\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-28-164528.png\" width=\"300\"  alt=\"Screenshot of a home page with a bottom sheet\"\u003e\n\u003cimg src=\"screenshots/device-2020-10-18-103522.png\" width=\"200\"  alt=\"Screenshot of a home page with the loading indicator\"\u003e\n\u003cimg src=\"screenshots/device-2020-10-18-103111.png\" width=\"200\"  alt=\"Screenshot of a dialog\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-090129.png\" width=\"200\"  alt=\"Screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-091508.png\" width=\"200\"  alt=\"Screenshot of a page with my photo\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-094730.png\" width=\"300\"  alt=\"Screenshot of a tablet with the list of countries\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-28-162902.png\" width=\"400\"  alt=\"Screenshot of an info dialog\"\u003e\n\n• **Code Readability:** code is easily readable with no unnecessary blank lines, no unused variables\nor methods, and no commented-out code, all variables, methods, and resource IDs are descriptively\nnamed such that another developer reading the code can easily understand their function.\n\n## Download\n\n\u003ca href=\"https://play.google.com/store/apps/details?id=ua.turskyi.travelling\" target=\"_blank\"\u003e\n\u003cimg src=\"https://play.google.com/intl/en_gb/badges/static/images/badges/en_badge_web_generic.png\" width=240  alt=\"google play badge\"/\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturskyi%2Ftravelling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturskyi%2Ftravelling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturskyi%2Ftravelling/lists"}