A Chrome extension that syncs busy times between Google Calendars. It creates "Busy" events in a target calendar based on events from source calendars.
Vibe-coded with Cursor and Claude
- Select target and source calendars from your Google Calendar account
- Automatically syncs busy times on a configurable interval
- Maintains privacy by only creating "Busy" events
- Configurable sync window (weeks ahead)
- Manual sync and cleanup options
- Efficient syncing that only updates changed events
- Clone this repository
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked" and select the extension directory
- Click the extension icon in Chrome
- Select your target calendar (where busy events will be created)
- Select one or more source calendars
- Set your desired sync interval and weeks to sync ahead
- Click "Save Settings"
The extension is built using vanilla JavaScript with ES modules. The code is organized as follows:
/gcalsync
├── background/ # Service worker and core services
│ ├── auth.js # Authentication service
│ ├── calendar.js # Calendar API service
│ ├── index.js # Main service worker
│ └── sync.js # Sync coordination service
├── popup/ # UI components
│ ├── popup.html # Popup interface
│ ├── popup.css # Styles
│ └── popup.js # Popup logic
├── utils/ # Shared utilities
│ └── storage.js # Chrome storage service
└── manifest.json # Extension manifest
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details. # gcalsync