Project for Pula Interview

Related tags

App PulaInterview
Overview

Android OS Languages-Kotlin PRs

PulaInterview

This app is for Pula (https://www.pula-advisors.com/) Android position. It's a Survey App. Consumes Questions API. Showcases usecase for State and Jetpack Compose framework.

Table of Contents

Functionalities

  • A user can login
  • A user can View Survey questions
  • A user can answer Questions
  • A user can can send his/her photo
  • The app sends a background service request every 15 minutes

Screenshots

.....

Approach

Architecture

This app has an architecture in place to allow the App to Scale, improve Quality and Robustness and Allow the App to Scale. This also makes the App to Scale

This App uses Clean Architecture to ensure:
  • Separation of concern
  • Drive UI from Data Model
  • Make functionality easily changeable or droppable
  • Make Code easier to read
  • Make use of good practices and Jetpack libraries(Architecture components)

Layers

Domain Layer

  • Sits between the UI and Data layer
  • Used in this project to encapsulate business logic
  • Enables use-cases to be reused in multiple view model
  • Defines the repository interface that drives the main functionality

Data Layer

  • Contains the implementation of business logic(Repository Implementation)
  • Gets data from the remote data source
  • Cache's remote data to Local Room Database

Presentation/UI layer

  • This layer is the layer that displays data to the user screen
  • Contains view models that are lifecycle friendly and takes code away from our Activity/UI components
  • Defines our architecture which is MVVM (Model View View-Model)
  • Contains our states that handle logic like loading

Dependency Injection

  • Used Hilt Dagger library for dependency injection
  • Allows classes to define their dependencies without constructing them
  • Also brings all the layers of the App together
  • Helps UI layer to be driven from data layer

states

  • The app uses states in ViewModel to queue different Events
  • The states send UI events from ViewModel to UI
  • Handles loading of the app and knows when there's an error
  • Sealed classes flow freely in States

How to Setup

Clone this repo

$ git clone [email protected]:fatahrez/PulaInterview.git

or HTTPS

$ git clone https://github.com/fatahrez/PulaInterview.git

Open the project with Android Studio and build using gradle. Feel free to run the App on your phone.

Login

Phone Number: Any phone number starting +2547.... password: 1234GYD%$

Libraries used

  • Retrofit - Android Network Client, Used to consume API from Pixabay API
  • Room - SQLite ORM - used to save data to the phone's database for caching
  • Hilt Dagger - Used for dependency Injection
  • Coroutines - Used to execute code asynchronously
  • Jetpack Compose - Used to write the declarative UI of the App
  • Material Design - Give the App a theme and generally improve UI of the App
  • Coil Image - Image Loading library
  • Lifecycle library - Majorly to define the ViewModels of the app
  • Compose nDestination - To navigate to different screens of the App
  • WorkManager - Background periodic tasks
  • OkHttpLogging Interceptor - Logging network requests
  • Mockk - Mocking for testing

Author Info

Twitter - @TheBandanaDev

LinkedIn - Abdulfatah

Back To The Top

You might also like...
Idaesbasic - An all in one project manager that stores everything in files directly into your project! 🤯
Idaesbasic - An all in one project manager that stores everything in files directly into your project! 🤯

Idaesbasic - Project-Managment redefined Idaesbasic Everything is a file 💾 With this project managment tool, everything is a file. Your todolists are

FoldingNavigationDrawer-Android This is a sample project present how to use Folding-Android to add Folding Efect to Navigation Drawer.

FoldingNavigationDrawer-Android Sample (Play Store Demo) This is a sample project present how to use Folding-Android to add Folding Efect to Navigatio

📱 Android Library to implement Rich, Beautiful, Stylish 😍 Material Navigation View for your project with Material Design Guidelines. Easy to use.
📱 Android Library to implement Rich, Beautiful, Stylish 😍 Material Navigation View for your project with Material Design Guidelines. Easy to use.

Material NavigationView for Android 📱 📱 Android Library to implement Rich, Beautiful Material Navigation View for your project with Material Design

It is a project that contains lessons and examples about Kotlin programming language. 🇰
It is a project that contains lessons and examples about Kotlin programming language. 🇰

Kotlin Tutorials What is Kotlin? I added the platforms it supports and great resources. You can access the article from the link below: https://medium

This is a first kotlin project
This is a first kotlin project

SmallPocket This is a first kotlin app, help user to save links easily, and can export to Evernote as weekly. Steps: copy link anywhere open SmallPock

Example of Android project showing integration with Kotlin and Dagger 2

kotlin-dagger-example This project demonstrate how to setup an Android Project with Kotlin and Dagger 2. It's based on Dagger 2 example ##Known issues

Mobile client for official Nextcloud News App written as Kotlin Multiplatform Project
Mobile client for official Nextcloud News App written as Kotlin Multiplatform Project

Newsout Android and iOS mobile client for Nextcloud news App. The Android client is already available to download in the Play Store. F-Droid and Apple

:octocat: A demo project based on MVVM architecture and material design & animations.
:octocat: A demo project based on MVVM architecture and material design & animations.

GithubFollows A simple demo project based on MVVM clean architecture and material design & animations. Architecture Specs & Open-source libraries Mini

🎬 A demo project for The Movie DB based on Kotlin MVVM architecture and material design & animations.
🎬 A demo project for The Movie DB based on Kotlin MVVM architecture and material design & animations.

TheMovies A simple project for The Movie DB based on Kotlin MVVM clean architecture and material design & animations. How to build on your environment

Owner
Abdulfatah Mohamed
Mobile Developer (Kotlin | Swift) | Google AAD
Abdulfatah Mohamed
Mobile app to Show Movies From TMDB API [Qhala Interview Solution], for the Android Engineer Role

Qhala Interview ?? ?? This is an Interview Tech challenge by Qhala I used TMDB API to solve this challenge. Screenshots Movies Movie Detail Prerequisi

James Nyakundi 5 May 1, 2022
remote technical interview Android challenge app

Android challenge We would like to learn more about how you approach a challenge as an Android Engineer. There is a simple app that isn’t made with be

GetYourGuide 0 Jan 9, 2023
Interview App for buuPass

BuuPass Interview App for buuPass Data Source Reqres Api tools retrofit kotlin License and Copyright LICENSE MIT License Copyright (c) 2021 Felix M

Felix Kariuki 1 Nov 21, 2021
Mobile app to show images from Pixabay. Interview solution for Adanian Labs android developer role.

PixaBay An android app built using Kotlin that consumes Pixabay API to display images.It has been built following Clean Architecture Principle, Reposi

Kibet 4 Nov 24, 2022
Created an interview scheduling portal for android

Interview Creation Portal Description Created an interiew scheduling portal, whe

Sayantan Banerjee 0 Jan 4, 2022
Mobile App that that enables users to manager product listing IProcure Ltd Senior Android Engineer Role interview solution

Mobile App that that enables users to manager product listing (in and e-commerce environment) IProcure Ltd Senior Android Engineer Role interview solution

Daniel Waiguru 6 Nov 1, 2022
Abel Suviri 6 Dec 16, 2022
Forage-project - This is a project given by Google Android Developers team. It's specifically created for data persistance.

Forage - Starter Code Starter code for the fifth independent project for Android Basics in Kotlin. This project pairs with Unit 5 of Android Basics in

Espérant GADA 0 Jan 2, 2022
Civihelper-project - This is our first android project .

Civihelper-project Problem-- Time taking and cumbersome conventional way to submit your civil problems. Proposed soln--- A platform to provide the sub

Kunal Kumar 1 Jun 6, 2022
Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Shubhaprasad Padhy 1 Jan 9, 2022