{"repo":"arekbauer/FaceDown","free":true,"listed":false,"github":"https://github.com/arekbauer/FaceDown","clone":"git clone https://github.com/arekbauer/FaceDown.git","description":"Showcase repository for FaceDown: A sensor-based focus timer. Demonstrating Jetpack Compose, Material 3 Expressive, Room, and raw SensorManager integration.","language":"Kotlin","stars":174,"topics":["android","hilt","jetpack-compose","kotlin","material3-expressive","mobile-development","mvvm","navigation-3","productivity-tools","room-database"],"license":null,"category":"mobile-apps","readme_excerpt":"FaceDown Note : This repository is a technical showcase for a private productivity application called \"FaceDown\". It contains sanitized snippets of the core engineering challenges to demonstrate architectural and technical capabilities. Featured in HowToMen's \"Top 15 Best Android Apps\" - \"Honestly a really great app to help you stay more productive.\" --- FaceDown is a minimal timer that enforces focus by requiring the user to place their phone face down on a table. If the phone is picked up or flipped over, the timer pauses, ensuring a distraction-free environment. Engineering Highlights 1. Robust Foreground Service & State Bridging The core timer loop runs within an Android Foreground Service (using the new SPECIAL USE type) to guarantee precision execution even when the device is dozing. - In-Memory State Bus : To communicate seamlessly with the UI, a singleton TimerRepository manages a MutableStateFlow that bridges the Service and any observing ViewModels. - Grace Period Logic : The service reacts to a combined flow of the timer ticker and physical orientation, automatically triggering a 10-second recovery window when the user picks up the phone. - WakeLock Management : Carefully manages PARTIAL WAKE LOCK across all pause, failure, and completion states to prevent battery drain. 2. Sensor Fusion & Coroutines The core physical mechanic relies on the device's accelerometer. I implemented a clean Flow -based repository that bridges the legacy SensorManager callback API with m","default_branch":null,"files":null,"tree":[],"storefront":"/r/arekbauer","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/arekbauer/FaceDown/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}