Re-verify Google Calendar sync after the Keycloak migration #41

Open
opened 2026-10-03 19:44:38 +00:00 by jalenluorion · 0 comments
Member

Goal
Saving an event to your own Google Calendar is a core reason to use CMUCal. Auth moved from Clerk to Keycloak (#13), so we need to prove the Google flow still works end to end.

Current state

  • API: api/app/api/google.py (/authorize, /oauth/callback, /calendar/status, /calendars/init, /calendar/events/add, /calendar/events/<id> DELETE). Google credentials live in the Flask session cookie (session["credentials"]), not in the DB.
  • Web: web/src/app/components/ConnectGoogleButton.tsx; save/unsave in web/src/context/EventStateContext.tsx (calls /google/calendar/events/add after saving).
  • The global axios instance gets the Keycloak bearer token (withBearer(axios) in web/src/app/utils/api/api.ts).
  • Redirect URIs registered with Google: prod https://api.cmucal.com/api/google/oauth/callback; local is port 5001 only, but docs/getting-started.md runs the API on 8080.

Scope

  • Prod: sign in, Connect Google, confirm a "CMUCal" calendar is created in Google.
  • Save an event from Explore; it appears in Google with the right time and location.
  • Unsave it; it is removed from Google.
  • Disconnect Google (/unauthorize) and reconnect.
  • Locally: run the API with PORT=5001 and matching GOOGLE_REDIRECT_URI / NEXT_PUBLIC_API_URL, or register the 8080 callback. Document whichever you pick in docs/getting-started.md.
  • File a bug for each failure you find (with steps to reproduce).

Done when

  • Connect, save, see in Google, unsave all work on prod.
  • docs/getting-started.md explains how to test Google sync locally.

Notes
Mobile has no Connect Google button today; that is tracked in the mobile layout issue.

**Goal** Saving an event to your own Google Calendar is a core reason to use CMUCal. Auth moved from Clerk to Keycloak (#13), so we need to prove the Google flow still works end to end. **Current state** - API: `api/app/api/google.py` (`/authorize`, `/oauth/callback`, `/calendar/status`, `/calendars/init`, `/calendar/events/add`, `/calendar/events/<id>` DELETE). Google credentials live in the Flask session cookie (`session["credentials"]`), not in the DB. - Web: `web/src/app/components/ConnectGoogleButton.tsx`; save/unsave in `web/src/context/EventStateContext.tsx` (calls `/google/calendar/events/add` after saving). - The global axios instance gets the Keycloak bearer token (`withBearer(axios)` in `web/src/app/utils/api/api.ts`). - Redirect URIs registered with Google: prod `https://api.cmucal.com/api/google/oauth/callback`; local is port 5001 only, but `docs/getting-started.md` runs the API on 8080. **Scope** - [ ] Prod: sign in, Connect Google, confirm a "CMUCal" calendar is created in Google. - [ ] Save an event from Explore; it appears in Google with the right time and location. - [ ] Unsave it; it is removed from Google. - [ ] Disconnect Google (`/unauthorize`) and reconnect. - [ ] Locally: run the API with `PORT=5001` and matching `GOOGLE_REDIRECT_URI` / `NEXT_PUBLIC_API_URL`, or register the 8080 callback. Document whichever you pick in `docs/getting-started.md`. - [ ] File a bug for each failure you find (with steps to reproduce). **Done when** - [ ] Connect, save, see in Google, unsave all work on prod. - [ ] `docs/getting-started.md` explains how to test Google sync locally. **Notes** Mobile has no Connect Google button today; that is tracked in the mobile layout issue.
jalenluorion added this to the Phase 1 milestone 2026-10-03 19:44:38 +00:00
jalenluorion added this to the CMUCal project 2026-10-03 19:45:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ScottyLabs/cal#41
No description provided.