Search image app [Adanian Labs Interview], Android developer role

Overview

Android OS Languages-Kotlin PRs

Pixar

This is App shows you Images from the Pixabay API

Table of Contents

Functionalities

  • Top Images - A user is able to See Top Images
  • Image Details - A user is able to see Image details when they click on an Image
  • Search Images - A user can search for Images
  • Profile Screen - A user get's to see a profile screen

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

Screenshots

...

How to Setup

Clone this repo

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

or HTTPS

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

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

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
  • Navigation - To navigate to different screens of the App

Author Info

Twitter - @Abdullfertah

LinkedIn - Abdulfatah

Back To The Top

You might also like...
A podcast proxy that sits between itunes search api and android apps allowing normalization of rss feeds to standard Json format that can be consumed by apps.

Podcasts Rss Feeds Search Proxy A podcast proxy written using kotlin dsl that sits between itunes search api, podcasts rss feeds and android apps allo

Add Ios Swipe Search TextField Component in Android Jetpack Compose.
Add Ios Swipe Search TextField Component in Android Jetpack Compose.

IosSwipeSearchCompose Add Ios Swipe Search TextField Component in Android Jetpack Compose. How it looks Usage val text = remember { mutableStateOf("")

A simple store project that includes a list of products, search on products, details of the product, and review submission.
A simple store project that includes a list of products, search on products, details of the product, and review submission.

AdidasTest A simple store project that includes a list of products, search on products, details of the product, and review submission. Summary Technol

Search in the categories of movies, music, e-books and podcasts with the keyword
Search in the categories of movies, music, e-books and podcasts with the keyword

CaseStudy In this application, you can search in the categories of movies, music, e-books and podcasts with the keyword you want, add them to your fav

Application to allow user to search his favourite repositories from Github.
Application to allow user to search his favourite repositories from Github.

Github Search Repositories App details: The application contain one screen with a search field and list of repositories. After the user inputs, the se

PokeDexApi is a simple version of PokeApi with search functionality.

PokeDex Api PokeDexApi is a simple version of PokeApi with search functionality based on KTOR. Documentation Base Url https://poki-dex.herokuapp.com E

Lucilla - Fast, efficient, in-memory Full Text Search for Kotlin

Lucilla Lucilla is an in-memory Full Text Search library for Kotlin. It allows t

Android SDK development environment Docker image
Android SDK development environment Docker image

AndroidSDK Android SDK development environment Docker image Goals It contains the complete Android SDK enviroment, is able to perform all regular Andr

sharex image uploader using ktor

ktor-sharex-uploader uploader zdjec napisany w kotlinie przy uzyciu ktor pobierak gotowa jarka jest do pobrania tutaj config apki konfiguracje apki ma

Comments
  • Pixar Photo App: Initial Functionality of the App

    Pixar Photo App: Initial Functionality of the App

    Description

    • This Pull request create the initial features of the App
    • Creates List of top Images screen
    • Creates Search screen together with search functionality
    • Creates Image detail screen
    • Creates Profile Screen

    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

    Screenshots

    ...

    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
    • Navigation - To navigate to different screens of the App

    How should this be manually tested?

    • Clone the App, Run it in Android Studio and install it on your phone

    Type of change

    Please select the relevant option

    • [ ] Bug fix(a non-breaking change that fixes an issue)
    • [x] New feature(a non-breaking change that adds functionality)
    • [ ] Breaking change(fix a feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes

    • [ ] End to end test
    • [ ] Integration test
    • [x] unit test

    Checklist:

    • [x] My code follows the style guidelines
    • [x] I have linted my code prior to submission
    • [ ] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings
    • [x] I have added tests
    • [x] New and existing tests pass locally with my changes
    opened by fatahrez 0
Owner
Abdulfatah Mohamed
Android Developer | Google AAD
Abdulfatah Mohamed
Mobile App that shows Random Products in a Nested Recyclerview for Android [Kotlin] Developer Role at Edvora

EdvoraAndroidTest An simple Android App for Edvora Android Assessment. It consum

Joel Kanyi 6 Jul 12, 2022
Anime-Info-Search-Jikan - Search Information about Anime

Anime-Info-Search-Jikan Search Information about Anime. Home Page Information Pa

null 3 Nov 13, 2022
A starting point for interview exercises

Kotlin Interview Starting Point This repo will serve as a starting point for your code challenge. Feel free to change anything in order to complete it

Agilefreaks 0 Mar 18, 2022
An Android Image compress library, reduce's the size of the image by 90% without losing any of its pixels.

Image Compressor An Android image compress library, image compressor, is small and effective. With very little or no image quality degradation, a comp

Vinod Baste 11 Dec 23, 2022
Inter Android Developer na Digital Innovation one

Desafios do Bootcamp Inter Android Developer Desafios Matemáticos em Kotlin Desafio Desafio Solução 1 Análise de Números Código 2 Consumo Médio do Aut

Luiz Correa 7 Nov 29, 2022
The complete Android Kotlin Developer course

The complete Android Kotlin Developer course In this course you will learn how to make 17 online games, and apps for Android, using Kotlin. check the

null 0 Jan 16, 2022
Web Container: A simple web container library for Android to help fellow developer to open WebView easily

WebContainer Description Web Container is a simple web container library for And

Achmad Ichsan Thaib 8 Nov 22, 2022
Jugando con un Parking realizado como prueba de examen en JetBrains Academy, curso Kotlin Developer

Kotlin Parking Lot Proyecto de evaluación para el título de Kotlin Developer en Jetbrains Academy. Consiste en realizar un parking con las especificac

José Luis González Sánchez 1 Jan 10, 2022
An Android app consuming Pixabay API to search and display list of images, built with MVVM pattern

Images An Android app consuming Pixabay API to search and display list of images, built with MVVM pattern as well as Architecture Components. Min Api

Ronnie Otieno 8 Sep 21, 2022