skip to content
back to projects

Zen

A focus and productivity app for Android, designed in Figma first.

Kotlin · Android SDK · Room · MVVM · Espresso · GitHub Actions · Figma

Zen's logo: three green petals above the word Zen.

The problem

Zen was my project for the Edinburgh Award (Digital Skills Specialist). It's a focus and productivity app for Android that brings a pomodoro timer, a task list and progress tracking together in one calm place. It's local-first: there's no account, and it opens straight into the timer.

My approach

  • Design before code. I designed the app in Figma from stakeholder feedback, then built it in Kotlin with XML layouts and View Binding, one fragment per tab.
  • A timer that survives Android. The pomodoro timer is driven by an end timestamp rather than by counting ticks, and a foreground service keeps it alive in the background, with actions in its notification.
  • Tasks and progress. Tasks have categories, due dates, reminders and drag-to-reorder. Every focus session is logged, which powers calendar heatmaps, streaks and totals.
  • Local data with MVVM. Tasks and sessions live in a Room database read through ViewModels as LiveData. The schema is exported, and migrations are tested.
  • Checked on every push. GitHub Actions runs lint, unit tests and a build, then Espresso UI tests on an emulator. Every Espresso action also runs Android's accessibility checks for labels, touch targets and contrast.

The code is on GitHub (opens in a new tab).

What I learned

  • Android can pause or stop an app at any time, so state that matters, like when a focus session ends, has to be stored as a fact rather than kept running in memory.
  • Making time something the tests can control turned a 25-minute timer test into one that finishes instantly.
  • Automated accessibility checks catch problems on every interaction, not just the screens I remember to check by hand.
next project: This website