Skip to content

Moving toward external calendar support #3733

@yujonglee

Description

@yujonglee

Current Status

  • We only support apple-calendar, powered by plugin/apple-calendar.
  • Only macOS permissions are required. No network calls, no OAuth.
  • We are still not 100% confident in its correctness.
  • Unlike V0, after moving to V1, we now actively accept logins. So we can support all types of external integrations.
  • Events are synced, not fetched on demand. This is by design.

What we're aiming to do

  • Support google-calendar and outlook-calendar, alongside apple-calendar.
  • Share as much code as possible.

What I'm proposing

Use nango.dev for OAuth

  • Open source; we can use YC credits.
  • @yujonglee is personally familiar with it.
  • The most flexible solution on the market, as far as I know.
  • Can be used for other types of integrations in the future.
  • We have a Rust client implemented in crates/nango, and integration code in crates/api-nango.

Implementation details

  • Nango has the concepts of proxy and sync.
  • We will not use their "sync", at least for calendar integrations.
  • Since we already support apple-calendar locally, which handles fetching/syncing on the desktop app side, maintaining the same pattern for external calendars makes more sense.
  • Our Rust-based API server (see crates/api-nango and crates/api-calendar) should expose routes, and the client should use those, similar to how we currently do .listEvents( for apple-calendar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions