Free forever: 5 resume reviews + 10 AI actions every month. Claim your free spot →
ReachRole

Android project

Build a job application tracker backed by a real REST API

A thin client over a REST API with pagination and every UI state handled — the actual daily shape of most real Android apps.

8-11 hoursEstimated time
IntermediateDifficulty
5Graded criteria
RepoWhat you submit

The brief

Build an app that tracks job applications (company, role, status, date applied) against a real or mock REST API: list applications, add a new one, update its status, with pull-to-refresh and pagination. Implement proper loading, error, and empty states for the network layer, not just the happy path.

Suggested stack

Kotlin Jetpack Compose Retrofit or Ktor client A mock or sample REST API

What you hand in

  • A public GitHub repository with the app and a README
  • The README documents the API contract used (real or mocked) and the architecture
  • A short note on how error states were tested (e.g. simulating a network failure)

Grading happens against the rubric below, so read it before you start — not after.

How this is graded

Published in advance and weighted out of 100. Nothing here is a surprise.

Network layer correctness 30 pts

Pagination loads additional pages correctly without duplicating items, and failed requests are caught and surfaced, not left to crash or hang.

UI state completeness 25 pts

Loading, error, and empty states are all implemented and visually distinct, not just the happy-path list.

Architecture 25 pts

Network calls go through a repository or equivalent layer, not directly inside a Composable, so the UI isn't re-fetching on every recomposition.

Status updates persist and reflect immediately 10 pts

Updating a status is reflected in the list right away and survives a refresh.

Finish 10 pts

No console errors or crashes, no broken layout, no leftover placeholder text or commented-out code.

Why this project is worth your weekend

  • Nearly every real Android app is a thin client over a REST API, so this is the actual daily shape of the job more than any offline-only app.
  • Missing error or empty states is the single most common gap between a demo app and a shippable one, and it's trivially checked by turning off wifi during a live review.
  • A clean repository layer is what lets the app be tested and maintained past the first feature.

Where people lose points

  • No handling for a failed network request beyond a generic crash or an infinite spinner.
  • Pagination that reloads from page 1 on every fetch instead of appending, so scrolling is effectively broken.
  • Network calls made directly from a Composable instead of through a ViewModel or repository, making the UI untestable and prone to re-fetching on recomposition.

Built it? Get it scored against this rubric.

Submit your work and get a score on every criterion above, written feedback, and three resume bullets you can use straight away.

Submit for grading Free to start. Grading uses one AI action.