{"id":18553867,"url":"https://github.com/marcobendinelli/view-android-mobile-app","last_synced_at":"2026-04-16T18:03:48.168Z","repository":{"id":234979461,"uuid":"789851376","full_name":"MarcoBendinelli/View-Android-Mobile-App","owner":"MarcoBendinelli","description":"View Android mobile application written using the Jetpack Compose toolkit","archived":false,"fork":false,"pushed_at":"2024-04-22T15:31:52.000Z","size":7994,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T11:12:37.559Z","etag":null,"topics":["android","dependency-injection","firebase","jetpack-compose","kotlin","mobile-app"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarcoBendinelli.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":"2024-04-21T18:14:57.000Z","updated_at":"2024-04-22T15:31:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"b90cd5d3-713f-4845-985f-9854e3b4c7fd","html_url":"https://github.com/MarcoBendinelli/View-Android-Mobile-App","commit_stats":null,"previous_names":["marcobendinelli/view-android-mobile-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoBendinelli%2FView-Android-Mobile-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoBendinelli%2FView-Android-Mobile-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoBendinelli%2FView-Android-Mobile-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoBendinelli%2FView-Android-Mobile-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcoBendinelli","download_url":"https://codeload.github.com/MarcoBendinelli/View-Android-Mobile-App/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254331197,"owners_count":22053129,"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","dependency-injection","firebase","jetpack-compose","kotlin","mobile-app"],"created_at":"2024-11-06T21:18:39.049Z","updated_at":"2026-04-16T18:03:48.128Z","avatar_url":"https://github.com/MarcoBendinelli.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# View :iphone:\nView is a Mobile Application allowing users to write and read articles or blogs based on their interests\n\n## Navigation Graph\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"800\" src=\"va_images/navigation_graph.svg\" alt=\"navigation_Graph\"\u003e\n\u003c/p\u003e\n\n## Screens and Features\n### Authentication\n\n* Email and Password Signin / Signup\n* _Google_ Signin / Signup\n* Reset Password\n* Form Validation\n* Contributors / Users and Topics _Selection_ phase after first application access\n    \n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_auth.svg\" alt=\"screens_auth\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_signup.svg\" alt=\"screens_signup\"\u003e\n\u003c/p\u003e\n\n### Home\n\n* _For You_ section: posts are shown based on the current selected filter\n* _Trending Now_ section, i.e., most saved posts\n* _Following_ section: following users posts\n* Posts are loaded as a _Stream_ for instant updates\n* More Posts are loaded on end list reaching for better performances\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_home.svg\" alt=\"screens_home\"\u003e\n\u003c/p\u003e\n\n### Search and Bookmarks\n\n* Posts can be searched by simply typing the name, topic or author of the Post\n* Bookmarked Posts are placed in a single spot\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_search_saved.svg\" alt=\"screens_search_saved\"\u003e\n\u003c/p\u003e\n\n### Settings and User Profile\n\n* User Profile Customizaion\n* User statistics\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_user_profile.svg\" alt=\"screens_user_profile\"\u003e\n\u003c/p\u003e\n\n### Post\n\n* Post creation with required fields for button enabling\n* Image Upload\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"750\" src=\"va_images/screens_post.svg\" alt=\"screens_post\"\u003e\n\u003c/p\u003e\n\n### More\n* Dark Mode\n* Localization for :us:/:uk: and :it: languages\n* Responsive Design for tablets\n\n## Architecture\n\n* The **S.O.L.I.D** principles are adhred to make the applications scalable, testable, maintanable, and resilient to change\n* The **Dependency Injection** design pattern is implemented\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"700\" src=\"va_images/architecture.svg\" alt=\"architecture\"\u003e\n\u003c/p\u003e\n\n## Testing\n\nThe application **is _not_** fully tested. Main tests like Unit, Integration, and End-To-End are used to analyze testing within the framework\n\n## Tools\nThe application is written using the [Jetpack Compose](https://developer.android.com/develop/ui/compose) toolkit. The main libraries used are the following:\n\n### Firebase Integration:\n* com.google.firebase:firebase-auth-ktx: Firebase Authentication library for Kotlin\n* com.google.firebase:firebase-firestore: Firebase Firestore library.\n* com.google.firebase:firebase-storage: Firebase Cloud Storage library.\n\n### Dependency Injection:\n* com.google.dagger:hilt-android: Hilt for dependency injection in Android\n* androidx.hilt:hilt-navigation-compose: Hilt integration with Compose navigation\n  \n### Kotlin Coroutines:\n* org.jetbrains.kotlinx:kotlinx-coroutines-core: Core coroutines functionality\n* org.jetbrains.kotlinx:kotlinx-coroutines-android: Coroutines support for Android\n* org.jetbrains.kotlinx:kotlinx-coroutines-play-services: Coroutines extension for Google Play services\n\n### Image Loading:\n* io.coil-kt:coil-compose: image loading library for Compose\n\n### Testing:\n* androidTestio.mockk:mockk: Mockk framework for Android instrumented tests.\n* androidTestandroidx.test.ext:junit: JUnit testing framework for Android.\n* androidTestandroidx.compose.ui:ui-test-junit4: Compose UI testing framework\n* testcom.google.dagger:hilt-android-testing: Hilt testing libraries.\n\n## Firebase Config\n* code/app : your google-services.json\n* code/app/src/main/res/values/strings.xml : your web_client_id\n* code/app/src/main/res/values-it/strings.xml : your web_client_id","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcobendinelli%2Fview-android-mobile-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcobendinelli%2Fview-android-mobile-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcobendinelli%2Fview-android-mobile-app/lists"}