Project Description
OmniTime is a cross-platform power reminders app built to solve a simple but painful problem: most reminder apps fail at the exact moments people need them most—when they’re offline, switching devices, or racing to capture something quickly. We built OmniTime around reliability first: instant local capture, deterministic sync, and no disappearing or duplicated reminders. The product combines fast reminder entry, natural-language parsing, recurrence, snooze/timer flows, and structured list views (Overdue, Today, Tomorrow, Upcoming, Anytime, Notes, Completed) in a calm interface optimized for speed.
Problem Statement & Motivation
People trust reminders only if they’re consistently correct. In real life, connectivity drops, apps get backgrounded, and users move between phone and web. Many tools still feel network-dependent, causing laggy input, duplicate items, or sync confusion.
Our motivation was to build an offline-first by default reminder system that feels instant and converges cleanly across devices, while remaining practical for real users through a free tier and pro features.
Solution & How It Works
OmniTime uses a local-first architecture where the on-device database is the source of truth for UX responsiveness. Every write is saved locally first, then queued as a pending mutation. A retryable, idempotent /sync flow pushes mutations and pulls ordered server deltas for deterministic convergence.
Key reliability behaviors:
- Local writes are never blocked by network
- Ordered change application via server sequence numbers
- Soft-delete tombstones prevent deleted reminders from reappearing
- Notification reconciliation runs after sync so schedules stay correct
- Realtime WebSocket hints accelerate refresh but are not required for correctness
On top of this core, we added natural language capture (date/time/duration and recurrence phrases), timezone-aware notifications, snooze actions, and a unified reminders + timers model.
Technologies, Tools, APIs, Frameworks Used
- Client: Flutter (iOS, Android, Web), Riverpod, go_router, Drift, Dio, Freezed, json_serializable, flutter_local_notifications
- Backend: Node.js, Express, Prisma, MySQL, JWT auth, authoritative
/syncendpoint - Auth/Billing: Username/password, Google Sign-In, Apple Sign-In, RevenueCat entitlement gating (
pro) - Platform Integrations: APNs/FCM hint paths, QR device pairing, IndexedDB/sql.js support for web
Future Scope / Roadmap
- Complete end-to-end push convergence validation across iOS/Android device matrices
- Harden conflict resolution path before enabling broadly
- Improve iOS notification action UX consistency
- Expand collaboration/shared lists after sync reliability milestones
- Strengthen CI/CD and production observability as post-hackathon scale work
Log in or sign up for Devpost to join the conversation.