Skip to content

Create SyncManager interface with NoOp and Supabase placeholder implementations #204

Description

@MessiasLima

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

  • SyncManager interface defines a start() method
  • NoOpSyncManager implements SyncManager with an empty start() method
  • SupabaseSyncManager implements SyncManager with an empty start() method
  • Koin provides NoOpSyncManager when the user is not subscribed and SupabaseSyncManager when subscribed
  • Subscription status is read from SubscriptionRepository.isUserSubscribed
  • Existing app startup and DI tests still pass

Additional information

  • This ticket intentionally leaves both implementations empty; the Supabase implementation will be built in a follow-up ticket.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions