Personal Project

Sensor-Enforced Android Focus Timer

Native Android focus timer where sessions only progress while the phone is placed face down and stable, using sensors, foreground service orchestration, local-first persistence, and explicit session semantics.

KotlinJetpack ComposeHiltRoomDataStoreSensors
My RoleSolo Product Builder
Core StackKotlin, Jetpack Compose, Hilt
ScopeActive Release
Primary OutcomeLocal-first Privacy Model
Sensor-Enforced Android Focus Timer

The Challenge

Most focus timers trust the user to ignore the phone, but the phone itself is the distraction. Phone Down turns focus into a physical ritual: place the phone face down and keep it stable.

Architecture & Approach

Multi-module native Android app with Compose feature modules, a pure domain session engine, Room session history, DataStore settings, sensor evaluation, foreground service runtime, notifications, and local-first privacy boundaries.

Separated strict timing and interruption rules from UI rendering. The app edge translates Android sensor, call, service, and notification signals into domain inputs, while the domain engine decides legal session transitions.

My Role & Contributions

Designed and implemented the product architecture, session semantics, module boundaries, focus UI, persistence model, release-readiness documentation, and verification workflow.

Key Technical Decisions

  • Made the focus mechanism sensor-enforced so elapsed focus time only accumulates when the device is face down and stable.
  • Kept core session rules in pure domain modules to make interruption handling and recovery testable without relying on UI state.
  • Chose local-first Room and DataStore persistence so the app works without login, cloud access, billing, or network connectivity.

Results & Impact

Local-first

Privacy Model

Multi-module

Android Architecture

Internal Test

Release Readiness

  • Implemented focus states including waiting, arming, active, paused, completed, interruption, and recovery flows.
  • Built insights, streaks, clean-session tracking, settings, onboarding, privacy policy, and pro/paywall foundations.
  • Documented release readiness with lint, unit tests, Paparazzi screenshot checks, Compose UI-test coverage, and release build verification.

Phone Down demonstrates native Android systems thinking: sensors, foreground services, local persistence, domain state machines, privacy constraints, modular architecture, and release discipline.

Lessons Learned

When behavior depends on real device signals, product correctness has to live below the UI. Explicit state machines and conservative recovery rules make the app more honest and trustworthy.

Interested in similar engineering or AI agent work?

I'm currently looking for Senior SWE and AI Engineering roles. Let's discuss how I can help your team ship systems that scale.

Ayush Jaipuriar

AI Agent Engineer & Senior Full-Stack Developer

jaipuriar.ayush@gmail.com

Currently exploring Senior SWE & AI Engineering roles

Connect

© 2026 Ayush Jaipuriar. All rights reserved.

Built with Vue.js & Nuxt 3. Deployed on GitHub Pages.