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

Android project

Build a habit tracker with local persistence and streaks

Add, track, and persist daily habits — a small app, but the streak logic across day boundaries is the actual test.

6-9 hoursEstimated time
BeginnerDifficulty
5Graded criteria
RepoWhat you submit

The brief

Build a habit tracker app in Jetpack Compose: add, edit, and delete habits, mark a habit done for the day, and track a streak count. Persist everything locally with Room so data survives an app restart. Follow Material 3 design conventions.

Suggested stack

Kotlin Jetpack Compose Room

What you hand in

  • A public GitHub repository with the app and a README
  • The README explains the data model and how the streak is calculated
  • A short note on the app architecture (where state lives)

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.

Local persistence correctness 30 pts

Data survives an app restart, and the streak count is accurate across real calendar day boundaries, not just wall-clock hours since last marked.

UI follows Compose/Material patterns 25 pts

State is hoisted appropriately (not everything in one Composable), and the UI follows Material 3 conventions rather than ad hoc styling.

CRUD completeness 20 pts

Add, edit, and delete all work, and deleting a habit with existing history is handled deliberately (confirmed or explained), not silently.

Architecture 15 pts

UI and data logic are separated (e.g. a ViewModel and repository), not all mixed into a single Activity or Composable.

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

  • A habit tracker's CRUD-plus-local-storage shape is close to the actual first ticket most junior Android developers get assigned.
  • Streak logic — what counts as "still on track" across a midnight or timezone boundary — is a small edge case that reveals real attention to detail.
  • Room plus Compose is the current standard stack, so this proves the candidate isn't stuck on deprecated Views/XML patterns.

Where people lose points

  • Putting all logic directly in the Composable or Activity instead of a ViewModel, so state is lost on rotation.
  • A streak counter that breaks at day boundaries because it uses elapsed wall-clock time instead of calendar days.
  • No confirmation before deleting a habit that has weeks of tracked history.

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.