How utsapoddar/sift-work-timer works
Sift is a cross-platform work-session timer: users configure a session, follow automatically scheduled work and break phases, and receive alarms at phase boundaries. The README also documents streak tracking and a minimal dark UI. The supplied tree omits the Flutter/Dart application sources, so those core components are represented without invented paths or implementation-level wiring. Native excerpts support the Android alarm-service flow and iOS Live Activity integration; other platform runners are omitted because they mainly launch Flutter.
Main entry points: TimerService.kt Timer service · MainActivity.kt Android bridge · AlarmReceiver.kt Alarm receiver · AppDelegate.swift iOS app bridge
Components 14
Timer experience
- Flutter app
- Work-break phases
- Session preferences
- Streak tracking
- Alarm audio
Android alarms
- Android bridge
work_timer/android/app/src/main/kotlin/com/utsapoddar/sift/MainActivity.kt - Timer service
work_timer/android/app/src/main/kotlin/com/utsapoddar/sift/TimerService.kt - Alarm receiver
work_timer/android/app/src/main/kotlin/com/utsapoddar/sift/AlarmReceiver.kt - Boot receiver
work_timer/android/app/src/main/kotlin/com/utsapoddar/sift/BootReceiver.kt
iOS activity
- iOS app bridge
work_timer/ios/Runner/AppDelegate.swift - Live Activity UI
work_timer/ios/SiftWidget/SiftWidgetLiveActivity.swift
Other components
- User
- Android alarms
- ActivityKit
Connections 14
- User → Flutter app: configures and starts
- Flutter app → Work-break phases: runs schedule
- Flutter app → Session preferences: persists settings
- Flutter app → Streak tracking: tracks habit
- Flutter app → Alarm audio: plays alarm
- Flutter app → Android bridge: calls platform channel
- Android bridge → Timer service: starts and controls
- Timer service → Android alarms: schedules alarms
- Android alarms → Alarm receiver: delivers alarm
- Alarm receiver → Timer service: notifies service
- Boot receiver → Timer service: restores timer
- Flutter app → iOS app bridge: calls platform channel
- iOS app bridge → ActivityKit: starts and updates
- ActivityKit → Live Activity UI: provides activity state