← Projects

FocusLock

A minimal focus timer for iPhone that counts every time you leave the app mid-session, then turns that into a brutally honest score.

What it is

FocusLock is a dead-simple focus session timer with one rule: if you leave the app during a session, it counts. When the timer ends, you get a summary with interruption count, score, and streak history.

It is intentionally narrower than a typical productivity app. No tasks, no ambient analytics, no fake “deep work” score stitched together from passive data. Just a timer and an honest record of whether you actually stayed with it.

Why I built it

Most focus apps either try to become your whole planning system or rely on app blocking that people route around immediately. I wanted something lighter and more confrontational: a timer that tells you, in plain terms, how many times you broke your own session.

How it works

You set a duration, optionally name the session, and hit Begin. From there the app watches foreground/background transitions with React Native's AppState API. Every time the session moves out of the active state, the interruption count increments. No invasive permissions, no background tracking tricks.

Completed sessions are saved locally with AsyncStorage, along with score history, custom duration presets, and streak state. expo-keep-awake keeps the session visible while the timer is running, and Expo Router keeps the flow simple: setup, session, summary, history, settings.

Key features

  • One-tap session start with preset durations or custom
  • Interruption tracking via AppState (no permissions required)
  • Focus score and session summary screen
  • Streak tracking across sessions
  • Full session history stored locally
  • Reorderable custom presets in settings
  • No backend, no account, no data collection

Status

The app is complete and the landing page is live. It is currently waiting for App Store approval before public release.