An intelligent calendar application with conversational AI capabilities, built with React and integrated with Google Calendar. Schedule, manage, and reorganize your events naturally through chat.
Thanks to: big-calendar.vercel.app - A fantastic open-source calendar project that influenced the visual design and user experience patterns.
- Day View: Focus on a single day with time-based event layout
- Week View: See your entire week at a glance with multi-day event support
- Month View: Monthly overview with event indicators
- Drag-and-drop event creation
- Current time indicator with auto-scroll
Chat naturally to manage your calendar:
- "Schedule a team meeting tomorrow at 2pm for 1 hour"
- "Block out focus time every weekday morning"
- "Move my dentist appointment to next Thursday and add a gym session on Monday"
- "What do I have scheduled this week?"
- Two-way synchronization with Google Calendar
- Recurring event support (daily, weekly, monthly, yearly)
- Color mapping from Google Calendar
- Automatic sync every 60 seconds
- Batch-parallel sync queue (5 concurrent API calls)
This project demonstrates several Tambo capabilities:
| Tool | Description |
|---|---|
createCalendarEvent |
Create a single event with optional recurrence |
getCalendarEvents |
Query events within a date range |
updateCalendarEvent |
Modify a single existing event |
deleteCalendarEvent |
Remove a single event |
batchCalendarUpdate |
Preferred for 2+ changes — create/update/delete in one call |
The
batchCalendarUpdatetool uses a JSON string for operations to avoid Tambo's streaming object decomposition. See ARCHITECTURE.md for details.
The AI receives real-time awareness of the user's calendar without registering extra tools:
| Helper | Data |
|---|---|
userTimeContext |
Current time + timezone |
calendarViewContext |
Selected date, view type, range description |
upcomingEventsContext |
Visible events with IDs (filtered to exact view) |
- GenerativeForm: Dynamic, schema-driven forms for structured data collection
- Auto-generated thread names
- Thread history with conversation switching
- Checkpoint-based undo/revert system
See ARCHITECTURE.md for the full architecture documentation including:
- System diagrams and data flow
- Directory structure
- State management (Jotai atoms)
- AI tool + context helper design
- Google Calendar sync pipeline
- Design decisions and trade-offs
graph LR
A[User] --> B[Chat Interface]
A --> C[Calendar UI]
B --> D[Tambo AI]
D --> E[AI Tools]
E --> F[Jotai State]
C --> F
F --> G[Google Calendar Sync]
G -->|batch parallel| H[Google Calendar API]
H --> G
G --> F
This app uses Google's OAuth2 Implicit Grant Flow, which only provides short-lived access tokens (~1 hour). There are no refresh tokens without a backend server implementing the Authorization Code flow.
Current behavior: When the token expires, users see a re-authentication dialog.
Supported:
- ✅ Daily, Weekly, Monthly, Yearly frequency
- ✅ Interval (every N days/weeks/etc.)
- ✅ Count-based and end-date limits
- ✅ BYDAY for weekly recurrence
Not yet supported:
- ❌ BYSETPOS, BYMONTHDAY complex rules
- ❌ Exception dates (EXDATE)
For users with very large event counts (1000+), client-side recurring event expansion may impact performance.
- Node.js 18+
- pnpm
- Google Cloud Console project with Calendar API enabled
VITE_TAMBO_API_KEY=your_tambo_api_key
VITE_GOOGLE_CLIENT_ID=your_google_client_id
pnpm install
pnpm dev
MIT