Web Application

ScheduleAI'd

Overview

ScheduleAI'd is a browser-based Google Calendar assistant powered by the Gemini API. Instead of navigating a calendar UI to create or move events, you describe what you want in plain language and the assistant handles it. A live weekly calendar view sits alongside the chat interface so you can see the result of every action immediately.

Motivation

Calendar apps are good at displaying and storing events, but routine tasks like rescheduling a meeting, finding a free slot, or getting a summary of the day still require several clicks and navigation steps. ScheduleAI'd reduces this to a single conversation. You can create, reschedule, and delete events or ask for a daily briefing, all without leaving the chat. The calendar view updates in real time so changes are always visible.

Tech Stack

  • React 19 + Vite: The frontend is built with React 19 and bundled with Vite, keeping the build fast and the component model modern.
  • Gemini API: The assistant uses Gemini's function calling feature to map natural language to structured calendar operations. The model decides which actions to take and calls the appropriate tools; the app executes them against the Calendar API.
  • Google Calendar REST API: All calendar reads and writes go directly to Google's Calendar API using an OAuth 2.0 access token obtained in the browser.
  • Google OAuth 2.0: Authentication uses Google's OAuth implicit flow so the app can act on the user's calendar without storing credentials server-side.

Entirely Client-Side

ScheduleAI'd has no backend server. Calendar reads and writes, and AI calls, all go directly from the browser to Google's APIs. The Gemini API key is entered by the user on first launch and stored locally in the browser; it is never sent to any intermediate server.

Testing

The project includes 86 tests covering the auth layer, calendar API handler, assistant tool loop, and top-level app flow. Tests run against a jsdom browser environment using Vitest and Testing Library.

ScheduleAI'd on GitHub Live Site