- Fork this repo to your github.
- The repository contains app resources: icons, color palette, layouts, fragments and activities. You can use whatever library, design patterns and dependency injection you want. You can add and modify all the things you want, just show us that you know Android :)
- Your task is to create an app on top of this project:
- Your main goal is to provide data
- download items from jsonplaceholder.typicode.com:
- Download photos from the endpoint
/photos
. There are 5000 items, shrink the list to 100 using request parameter (_limit=100
). You can useRawPhoto
model. - Download albums from the endpoint
/albums/{id}
forids
that are in the downloaded photos (field:albumId
). You can useRawAlbum
model. - Download users from the endpoint
/users/{id}
forids
that are in the downloaded albums (field:userId
). You can useRawUser
model.
- Download photos from the endpoint
- Download all the items on Splash screen. The rest of the app should use cached data. If there are some problems with connection, display a dialog. You can use
showError()
inSplashActivity
- Display a list with thumbnails on
RecyclerView
inListFragment
. You can useListItem
model andListAdapter
but you can change it or use whatever adapter you want. - Display details with a full photo in
DetailFragment
which appears after clicking on an item on the list. You can useDetail
model. - Use
R.id.search
to filter data bytitle
andalbumTitle
inRecyclerView
.
- download items from jsonplaceholder.typicode.com:
- Your second goal is to style the app:
- All the necessary colors are defined in
palette.xml
, use them to style your app. - Use
R.drawable.ic_placeholder
for placeholders inImageViews
.
- All the necessary colors are defined in
- Optional - if you want more :)
- In
mock
flavor there are mocks for all requests that you can use while developing. You can finish mock flavor. - Use
R.id.banner
to show users if they are in offline mode. The app should start from scratch in offline mode for 10 minutes. After 10 minutes, when the app starts, show a dialog usingshowError()
inSplashActivity
. - Create dark mode for the app. All the variants of logos are also defined in dark mode.
- Try to create some animations/transitions.
- Polish your app, try to add something that will blow our minds :)
- In
- Your main goal is to provide data
- Remember to commit as much as you can. Don't be afraid of mess in your commits, we will not look at your commit history :)
- Once you've completed the task, please send us the link to your repo. We would also be grateful for your feedback for this task. Feel free to send us your ideas about it, maybe we can improve it for future candidates.
- jsonplaceholder uses
placeholder.com
which returns error 410 on Android devices. You need to changeUser-agent
header of requests (toCool app
or something different than default). - jsonplaceholder response may took even one minute. Instead of increasing timeouts, try to retry requests few times. On second/third request it usually works fine.
- If you want to use your http client to cache data, be aware of
Pragma
andAge
headers.