android-engineer-assignment-2021-miguelaboliveira created by GitHub Classroom

Overview

Memory Android Engineer Interview Assignment

Hello and welcome to the Memory Android Engineer interview assignment! There can be no demo app that doesn't use the TMDB API so guess what API we picked this time? Yeah you guessed it right: It's TMDB.

Prerequisites:

About the demo app:

  • This demo app shows a list of trending movies grabbed from the TMDB trending movies API.
  • Clicking on a movie in the list shows a detail screen which sports a bigger picture and adds a textual overview of the movie.
  • The codebase strives to mimic the structure of Memory's Android apps, the goal is to give you a feel at what it's like to contribute code as an Android Engineer at Memory.
  • The project uses Gradle's new Dependency Catalog feature to manage dependencies: https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml
  • The UI is built with Jetpack Compose and driven by ViewModels using snapshot state variables, you may use Flows instead if they suit you better.
  • The business logic uses coroutines and Flows to manage asynchronous operations.

The app is comprised of several modules:

  • An HTTP client module for the TMDB api in the /shared/httpapi directory.
  • A local database module in the /shared/database directory built with SQLDelight.
  • A prototypical business logic class named MovieRepo in the /shared/logic/movie module.
  • A home screen showing the list of trending movies in the /shared/screens/trending module.
  • A movie detail screen in the /shared/screens/movie module.
  • An Android application that makes use of all the other modules in the /app directory.

The assignment:

  1. Currently only the first 20 trending movies are shown in the list: you should handle pagination and display the full list of trending movies available from the API.
  2. Show a movie's runtime in the detail view: it can be fetched using the HttpApi.movieApi.getMovieDetails() method.
  3. Show runtime errors (e.g. network failures) in the UI.
  4. Tests are missing for the modules under /shared/logic and /shared/screens : write some.
  5. Add some embellishments to the overall UI.
  6. Try to use the database as a cache as much as possible: the more data the user can still see without network access, the better.

Please try to complete as many of the above steps as you can: The further you get the better but don't worry too much if you can't go all the way.

You might also like...
A comprehensive tutorial for Android Data Binding
A comprehensive tutorial for Android Data Binding

精通 Android Data Binding 更多干货可移步至个人主页 QQ 交流群:324112728 ,或者点击链接加入QQ群 官方虽然已经给出了教程 - Data Binding Guide (中文版 - Data Binding(数据绑定)用户指南) ,但是实践之后发现槽点实在太多,于是就

A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

Development in this repository is stopped. Future development continues on https://github.com/yigit/android-priority-jobqueue ========================

An android library for displaying fps from the choreographer and percentage of time with two or more frames dropped
An android library for displaying fps from the choreographer and percentage of time with two or more frames dropped

DEPRECATED TinyDancer is deprecated. No more development will be taking place. Check out the Google Android developer documentation for UI performance

Memory safer implementation of android.os.Handler
Memory safer implementation of android.os.Handler

Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handl

Android Library to help you with your runtime Permissions.
Android Library to help you with your runtime Permissions.

PermissionHelper Android Library to help you with your runtime Permissions. Demo Android M Watch it in action. Pre M Watch it in action. Nexus 6 (M) N

Android validation library which helps developer boil down the tedious work to three easy steps.
Android validation library which helps developer boil down the tedious work to three easy steps.

AwesomeValidation Introduction Implement validation for Android within only 3 steps. Developers should focus on their awesome code, and let the librar

📄The reliable, generic, fast and flexible logging framework for Android
📄The reliable, generic, fast and flexible logging framework for Android

logback-android v2.0.0 Overview logback-android brings the power of logback to Android. This library provides a highly configurable logging framework

Android framework for node.js applications

Introduction Anode is an embryonic framework for running node.js applications on Android. There are two main parts to this: a port of node.js to the A

AndroidPermissions 4.2 0.0 Java Android M was added to check Permission. but Permission check processing is so dirty.

Android Permissions Checker Android M was added to check Permission. but Permission check processing is so dirty. This Project is to be simple, Checki

Owner
Memory
Tools for a better future of work.
Memory
Android development recommendation for outdated libraries and current libraries preferred as of 2021

GADS21-Android-Recomendation-For currently used libraries and dependencies Android development recommendation for outdated libraries and current libra

Timz Owen 6 Nov 22, 2021
Menyimpan source code tugas User Interaction and Control, mata kuliah Pemrograman Mobile Teori, semester lima tahun 2021.

android-uic About This Project Android-uic adalah sebuah aplikasi sederhana yang dibuat untuk menyelesaikan tugas dua mata kuliah pemrograman mobile.

Galang Aidil Akbar 1 Nov 8, 2021
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022
A Java client for the Sixpack A/B testing framework https://github.com/seatgeek/sixpack

sixpack-java A Java client for SeatGeek's Sixpack a/b testing framework: https://github.com/seatgeek/sixpack Installing Sixpack-java is currently only

null 135 Oct 7, 2022
Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

OpenBytes 1 Feb 18, 2022
SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device.

#Scripting Layer for Android (SL4A) SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreter

Damon Kohler 2.3k Dec 23, 2022
****. Use the native and support library variants instead - https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html. An android library that makes it easy to add custom fonts to edittexts and textviews

Add to your project Add this line to your dependencies in build.gradle compile 'in.workarounds.typography:typography:0.0.8' Using the views There are

Workarounds 43 Nov 6, 2021
ZXing ("Zebra Crossing") barcode scanning library for Java, Android

Project in Maintenance Mode Only The project is in maintenance mode, meaning, changes are driven by contributed patches. Only bug fixes and minor enha

ZXing Project 30.5k Dec 27, 2022
RxJava binding APIs for Android's UI widgets.

RxBinding RxJava binding APIs for Android UI widgets from the platform and support libraries. Download Platform bindings: implementation 'com.jakewhar

Jake Wharton 9.7k Jan 6, 2023
A gradle plugin for getting java lambda support in java 6, 7 and android

Gradle Retrolambda Plugin This plugin will automatically build your java or android project with retrolambda, giving you lambda goodness on java 6 or

Evan Tatarka 5.3k Jan 5, 2023