Skip to content

[GF-FE-19] Add Google Calendar sync and Outlook .ics download to booking pages #1114

@yusuftomilola

Description

@yusuftomilola

Problem

Members must manually copy booking details into their calendar apps. There is no "Add to Calendar" button after a booking is confirmed, and no way to connect a Google Calendar account to auto-sync future bookings. The calendar sync backend (GF-BE-15) handles OAuth and sync logic but has no frontend connection.

Proposed Solution

Add calendar sync UI in two places.

1. Booking confirmation and detail page (frontend/app/bookings/[id]/page.tsx)

  • Add an "Add to Google Calendar" button that triggers the OAuth connect flow if not already connected, or directly creates the calendar event if connected
  • Add an "Add to Outlook" button that generates and downloads an .ics file (this can be done client-side without any backend endpoint using the ics npm package)

2. Profile settings (frontend/app/profile/page.tsx or frontend/app/settings/page.tsx)

  • Add a Calendar Sync section showing connection status
  • Connect Google Calendar button → calls GET /calendar-sync/auth/google to get the OAuth URL, then redirects the user
  • Disconnect button → calls DELETE /calendar-sync/disconnect
  • Status indicator: "Connected ✓" or "Not connected"

Acceptance Criteria

  • "Add to Google Calendar" button added to the booking detail page
  • Clicking the button redirects to Google OAuth if not connected, or creates the event directly if already connected
  • "Add to Outlook" button generates and downloads an .ics file (client-side, no backend required)
  • Calendar sync status section added to profile/settings
  • Connect and Disconnect buttons call the correct API endpoints
  • ics npm package used for Outlook .ics generation

Depends on: [GF-BE-15] Build Google Calendar OAuth and booking sync service

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions