You are on page 1of 2

Technical Assessment

1. Assessment Brief:
Write an offline-first Android app that shows a list of images fetched from a REST API, with the
ability to modify captions for every image, locally add new images from the device gallery, and
resize images while maintaining their aspect ratios.

2. Acceptance Criteria:
● The app loads images from the Marvel REST API
● The app allows resizing images through the TinyPNG REST API
● App allows to resize any image (while maintaining its aspect ratio)
● App allows to add a textual caption that’s stored locally to any image
● App caches images and their captions locally (SQLite, RoomDB, …etc)
● Uploading images should be offloaded to the background with a notification indicator;
● if the app is in the foreground, then an app-global status indicator should be visible
inside all app pages
● The App works offline normally
● Tasks (like editing a caption of an image, or resizing an image) should be queued to run
when the connection is back
● The app contains 2 main pages:
● A listing page that shows all images obtained from the REST api
● Image Previews List: Each item should show the caption beneath the actual Image
● If an image doesn’t have a caption, then it will default to a placeholder of “No Caption”.
● If a caption exceeds 80 characters it shouldn’t show the rest of the caption and replace it
with an ellipsis ‘…’
● Search Input: Search for an image by its caption, only shows matching Image Previews
● Swipe to refresh: re-fetches data from both the server and the local cache
● Floating Action Bar (FAB): to show a modal to add a new image from the device gallery
with a caption (reuse the image detail UI)
● Image Detail page
● It shows the image;
● and an editable text input that contains the caption;
● Two editable text inputs for the width and height of the image;
● SubmitButton: resizes the image if needed and updates the caption from the text box (if
any)
● This page’s background should be based on the dominant accent color of the image (no
3rd party lib)
● If an image doesn’t have a caption, then it will default to a placeholder of “No Caption” +
a red border around the text input
● Long-pressing all images in the app shows a menu to save to the device gallery with the
caption in the image file metadata
● Users can add gallery images to the app from in-app-FAB or a `share intent`
This challenge will be used as a base for the technical interview.
During the interview, we will discuss your architectural choices, use of good practices, and your
general understanding of what you just did. So refrain from copying code online. Along with a
fully working application.

Finally, the code should be versioned using git and shared with us through any git
repository hosting service.

3. Prerequisites
a. APIs:
i. Marvel
1. https://developer.marvel.com/documentation/getting_started
2. Please note that the API requires a hash and a timestamp, please read
the documentation thoroughly.
3. API base URL: https://gateway.marvel.com
ii. TinyPNG
1. https://tinypng.com/developers/reference

4. Delivery
● Upload the code to a GitHub public repo.
● We should be able to clone and run the project using instructions from the readme file.

5. Assets:
● Marvel Doc: http://developer.marvel.com/

At Chefaa, we Pay attention to design. So, apart from your code quality,
we’ll evaluate how you handle the UI.

Finally, best of luck, we are looking forward to reviewing your great work.

You might also like