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.
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
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.
Data survives an app restart, and the streak count is accurate across real calendar day boundaries, not just wall-clock hours since last marked.
State is hoisted appropriately (not everything in one Composable), and the UI follows Material 3 conventions rather than ad hoc styling.
Add, edit, and delete all work, and deleting a habit with existing history is handled deliberately (confirmed or explained), not silently.
UI and data logic are separated (e.g. a ViewModel and repository), not all mixed into a single Activity or Composable.
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.
Other Android projects
Two or three of these turn an empty resume into a portfolio.
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.