{"id":22449909,"url":"https://github.com/turskyi/travelling_pro","last_synced_at":"2026-05-09T09:04:11.227Z","repository":{"id":45869944,"uuid":"323942898","full_name":"Turskyi/travelling_pro","owner":"Turskyi","description":"Android mobile application. A convenient way to collect all countries that you have visited. A showcase for using firestore, viewmodel, clean-architecture, koin and coroutines.","archived":false,"fork":false,"pushed_at":"2025-01-22T23:27:27.000Z","size":31440,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-13T01:04:27.728Z","etag":null,"topics":["android","clean-architecture","coroutines","data-chart","databinding","firebase-distribution","firestore","github-actions","glide","koin","kotlin","loading-svg","lottie-animation","mvvm","photo-view","recyclerview","retrofit","viewmodel","viewpager2","xml"],"latest_commit_sha":null,"homepage":"https://play.google.com/store/apps/details?id=io.github.turskyi.travellingpro","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-12-23T15:53:12.000Z","updated_at":"2024-07-20T02:39:53.000Z","dependencies_parsed_at":"2024-07-20T04:23:34.044Z","dependency_job_id":null,"html_url":"https://github.com/Turskyi/travelling_pro","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Turskyi/travelling_pro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2Ftravelling_pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2Ftravelling_pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2Ftravelling_pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2Ftravelling_pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Turskyi","download_url":"https://codeload.github.com/Turskyi/travelling_pro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Turskyi%2Ftravelling_pro/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259559622,"owners_count":22876494,"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","data-chart","databinding","firebase-distribution","firestore","github-actions","glide","koin","kotlin","loading-svg","lottie-animation","mvvm","photo-view","recyclerview","retrofit","viewmodel","viewpager2","xml"],"created_at":"2024-12-06T05:12:25.036Z","updated_at":"2026-05-09T09:04:11.219Z","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[![Build \u0026 upload to Firebase App Distribution](https://github.com/Turskyi/travelling_pro/actions/workflows/android_ci.yml/badge.svg?event=push)](https://github.com/Turskyi/travelling_pro/actions/workflows/android_ci.yml)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/Turskyi/travelling_pro)\n\u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/m/Turskyi/travelling_pro\"\u003e\n\n# Travelling Pro\n\nAn Android mobile application to help collect all countries that you have\nvisited and see how many countries visited other members of the app.\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:\n[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: [Firestore](https://firebase.google.com/docs/firestore);\n\n• Dependency injection:\n[Koin](https://insert-koin.io/docs/reference/introduction);\n\n• Reactive programming:\n[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\nnew Android Package (APK) to\n[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\nto\n[deliver](https://appcenter.ms/users/Turskyi/apps/Travelling-Pro/build/branches/master)\nnew release app bundle to **Google Play** after every push to **master** branch;\n\n• App testing platforms:\n[Firebase App Distribution](https://appdistribution.firebase.dev/i/95a4a3bcea0281c7);\n\n• App Store:\n[Google Play](https://play.google.com/store/apps/details?id=io.github.turskyi.travellingpro);\n\n• Operating system: [Android](https://www.android.com/);\n\n• Embedded SDK:\n[Facebook Sharing](https://developers.facebook.com/docs/sharing/android),\n[Facebook Login](https://developers.facebook.com/docs/facebook-login/overview);\n\n• Object storage service:\n[Cloud Storage for Firebase](https://firebase.google.com/docs/storage);\n\n• Authentication:\n[FirebaseUI for Auth](https://firebase.google.com/docs/auth/android/firebaseui);\n\n• Cloud services:\n[Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging);\n\n• Google Play services:\n[Location](https://developer.android.com/training/location);\n\n• UI components: [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\n\u003c!--suppress CheckImageSize --\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-085243.png\" width=\"200\"  alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-085456.png\" width=\"200\" alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-090524.png\" width=\"200\" alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-28-164528.png\" width=\"300\" alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-10-18-103522.png\" width=\"200\" alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-10-18-103111.png\" width=\"200\" alt=\"screenshot\"\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\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-05-094730.png\" width=\"300\" alt=\"screenshot\"\u003e\n\u003cimg src=\"screenshots/device-2020-06-28-162902.png\" width=\"400\" alt=\"screenshot\"\u003e\n\n• **Code Readability:** code is easily readable with no unnecessary blank lines,\nno unused variables or methods, and no commented-out code, all variables,\nmethods, and resource IDs are descriptively named such that another developer\nreading the code can easily understand their function.\n\n## Download\n\n\u003ca href=\"https://play.google.com/store/apps/details?id=io.github.turskyi.travellingpro\" 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_pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturskyi%2Ftravelling_pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturskyi%2Ftravelling_pro/lists"}