{"id":19777116,"url":"https://github.com/anibalventura/flags-quiz","last_synced_at":"2025-04-30T19:31:29.886Z","repository":{"id":73487342,"uuid":"291282037","full_name":"anibalventura/flags-quiz","owner":"anibalventura","description":"Flag Quiz app tests the user’s ability to correctly identify flags from around the world.","archived":false,"fork":false,"pushed_at":"2022-02-02T13:38:16.000Z","size":3656,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T04:26:10.173Z","etag":null,"topics":["android","android-app","android-development","dark-theme","databinding-android","flags-quiz","kotlin","kotlin-android","material-design","material-ui","mvvm-android","mvvm-architecture","quiz","room-database","room-persistence-library","viewmodel","viewmodel-livedata"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anibalventura.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-29T14:01:10.000Z","updated_at":"2024-10-15T12:46:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"e539580a-83b7-4217-a6ea-7681468562e7","html_url":"https://github.com/anibalventura/flags-quiz","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/anibalventura%2Fflags-quiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anibalventura%2Fflags-quiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anibalventura%2Fflags-quiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anibalventura%2Fflags-quiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anibalventura","download_url":"https://codeload.github.com/anibalventura/flags-quiz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251769347,"owners_count":21640885,"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","android-app","android-development","dark-theme","databinding-android","flags-quiz","kotlin","kotlin-android","material-design","material-ui","mvvm-android","mvvm-architecture","quiz","room-database","room-persistence-library","viewmodel","viewmodel-livedata"],"created_at":"2024-11-12T05:23:15.887Z","updated_at":"2025-04-30T19:31:29.878Z","avatar_url":"https://github.com/anibalventura.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flags Quiz\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://android-arsenal.com/api?level=21\"\u003e\u003cimg alt=\"API\" src=\"https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat\"/\u003e\u003c/a\u003e\n\nFlags Quiz is a quiz game (trivia) application that tests the user’s ability to correctly identify flags from around the world based on modern Android application tech-stacks and MVVM architecture.\n\n\u003ca href=\"https://play.google.com/store/apps/details?id=com.anibalventura.flagsquiz\"\u003e\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png\" height=\"75\"\u003e\u003c/a\u003e\n\n## Features\n* More than 180 flags, categorized by continent.\n* Quiz of 10 random flags per continent.\n* Indicate correct and wrong answer.\n* Quiz ends when get 3 answers wrong.\n* Share result of the quiz when won.\n* History of past quiz.\n* Store user name and change later from settings.\n* Dark mode support.\n* Spanish translation.\n\n\u003cimg src=\"images/app.gif\" align=\"right\" width=\"28%\"/\u003e\n\n## Tech Stack \u0026 Open-source libraries\n* Minimum SDK level 21.\n* [Kotlin](https://kotlinlang.org/) - official programming language for Android development.\n* [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - for asynchronous programming.\n* [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - collection of libraries that help you design robust, testable, and maintainable apps.\n  - [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - data objects that notify views when the underlying database changes.\n  - [Data Binding](https://developer.android.com/topic/libraries/data-binding) - data objects to bind UI components in your layouts to data sources in your app.\n  - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - stores UI-related data that isn't destroyed on UI changes. \n  - [Room](https://developer.android.com/topic/libraries/architecture/room) - access your app's SQLite database with in-app objects and compile-time checks.\n  - [Lifecycle](https://developer.android.com/topic/libraries/architecture/lifecycle) - components to perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.\n* [Navigation](https://developer.android.com/guide/navigation) - interactions that allow users to navigate across, into, and back out from the different pieces of content within your app.\n* [Fragment](https://developer.android.com/guide/components/fragments) - represents a behavior or a portion of user interface in a FragmentActivity.\n* [RecyclerView](https://developer.android.com/guide/topics/ui/layout/recyclerview) - for display a scrolling list of elements based on large data sets.\n* [Preference](https://developer.android.com/reference/androidx/preference/package-summary) - allows to build interactive settings screens, without needing to handle interacting with device storage or managing the user interface. \n* [Material-Components](https://github.com/material-components/material-components-android) - Material design components.\n\n## Architecture\nThis app uses [MVVM (Model View View-Model)](https://developer.android.com/jetpack/docs/guide#recommended-app-arch) architecture.\n\n\u003cimg src=\"images/architecture.png\" width=\"100%\"/\u003e\n\n## Contribute\nAwesome! If you would like to contribute you're always welcome!\n\n# License\n```xml\nCopyright 2020 Anibal Ventura\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanibalventura%2Fflags-quiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanibalventura%2Fflags-quiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanibalventura%2Fflags-quiz/lists"}