Bubble
Usually replies in seconds
Today
←Back to Projects
ORA screenshot 1

ORA

Period2025
TeamSolo developer
Contribution100%
RoleAndroid developer: designed UI/UX, built complete native Kotlin codebase, and published open-source.

ORA is an open-source native Android countdown and event-tracking application built with Kotlin, ViewBinding, and Material Design 3. It features interactive home screen widgets with adaptive frequency throttling, custom canvas countdown animations, exact alarm notifications, and local Room SQLite persistence with full JSON export/import.

KotlinAndroid SDKViewBindingMaterial Design 3Room SQLiteLiveDataCoroutinesAppWidgetsAlarmManager

Key Features

1

MVVM Architecture & Room SQLite Persistence

  • Structured MVVM pattern with ViewModel, LiveData, Repository, and Room DAO delivering robust local state management.
  • Local SQLite storage with automatic schema migrations and full JSON export/import via Gson for complete user data portability.
  • Zero network permissions: all event data remains strictly on the user's physical device.
2

Interactive Home Screen Widget with Frequency Throttling

  • Native AppWidgetProvider rendering real-time countdown progress directly on the Android launcher via RemoteViews.
  • Adaptive frequency throttling: updates once per minute under normal conditions, and automatically ramps up to per-second updates when a timer deadline approaches.
  • Pinned event prioritization ensuring the user's most critical event is always highlighted.
3

Reliable Alarm Scheduling & Reboot Persistence

  • Precise reminder notifications scheduled using Android AlarmManager with exact alarm capabilities.
  • BootReceiver broadcast receiver automatically queries Room and reschedules all pending alarms and widget tickers after device reboots.
  • CountdownNotificationService managing optional persistent live countdown notifications in the status bar.
4

Custom Canvas Graphics & Material Design 3 Theming

  • Custom Canvas drawing view (CountdownProgressBorderView) animating countdown progress along dynamic circular and rounded rectangular borders with custom glow and shimmer effects.
  • Integrated color picker allowing custom accent color configuration per countdown event.
  • Fluid swipe-to-action gestures with integrated haptic feedback, and Light/Dark/System theme switching via AppCompatDelegate.

Troubleshooting

Navigating Strict Android 12+ / 13+ Exact Alarm & Notification Restrictions

Problem Discovery
  • On Android 12+ (API 31) and Android 13+ (API 33), apps cannot set exact alarms or post notifications without explicit runtime permissions, causing reminders to fail silently on newer devices.
Solution Process
  • Implemented runtime permission handling for POST_NOTIFICATIONS on Android 13+.
  • Integrated AlarmManager.canScheduleExactAlarms() verification with graceful degradation to inexact windowed alarms if exact alarm permissions are restricted.
  • Designed a non-intrusive onboarding dialog that directs users to the system Settings screen when exact alarms are required.
Result
  • Reliable reminder delivery across Android 8 through Android 15 without crashes or permission violations.
💡Lessons Learned
  • Modern Android development requires defensive permission architectures where core features gracefully adapt to evolving OS power and privacy policies.