Description
Cloud sync will eventually be implemented for premium subscribers. This ticket lays the groundwork by defining the SyncManager abstraction and its two initial implementations, wired to the user's subscription status so free users receive a no-op implementation by default.
Scope and constraints
- In scope:
SyncManager interface, NoOpSyncManager, SupabaseSyncManager (empty), Koin provision based on subscription status.
- Out of scope: actual sync logic, Supabase realtime integration, task conflict resolution, soft-delete handling.
References
Scope
- In scope: sync abstraction, two empty implementations, DI wiring gated by subscription status.
- Out of scope: implementing synchronization behavior.
Acceptance criteria
Additional information
- This ticket intentionally leaves both implementations empty; the Supabase implementation will be built in a follow-up ticket.
Description
Cloud sync will eventually be implemented for premium subscribers. This ticket lays the groundwork by defining the
SyncManagerabstraction and its two initial implementations, wired to the user's subscription status so free users receive a no-op implementation by default.Scope and constraints
SyncManagerinterface,NoOpSyncManager,SupabaseSyncManager(empty), Koin provision based on subscription status.References
Scope
Acceptance criteria
SyncManagerinterface defines astart()methodNoOpSyncManagerimplementsSyncManagerwith an emptystart()methodSupabaseSyncManagerimplementsSyncManagerwith an emptystart()methodNoOpSyncManagerwhen the user is not subscribed andSupabaseSyncManagerwhen subscribedSubscriptionRepository.isUserSubscribedAdditional information