Sheet 5 of 6 · Sched · Exploded assembly

Sched

AI scheduling assistant

The Sched architecture as an exploded drawing. Each part links to its section.

Specification

Role
Fullstack Developer
Stack
Next.js 16, React 19, TypeScript, Tailwind CSS 4, Better Auth, Drizzle ORM, Postgres, Google Calendar API, Google Tasks API, Gemini 2.5 Flash, Zustand
Repos
archived · deployed build behind Google login

sched repo

Drawn by
Praffi Ramadhani
Date
2026-05-24
Status
archived
Sheet
5 / 6

Overview

Sched is an AI scheduling assistant for Google Calendar. Instead of dragging blocks around manually from a blank week, the user types what they need: meetings, study sessions, reminders, deadlines, routines, or schedule changes. Sched drafts the plan, shows it on the calendar, and waits for the user to review it before writing anything to Google Calendar or Google Tasks.

The problem

“Calendars are reliable at storing plans, but they are slow when the plan starts as messy intent.”

A user may know they need deep work next Monday morning, tennis tomorrow at 5, and a deadline reminder on Friday, but turning that into a clean calendar still requires manual translation.

Sched adds an intent layer on top of the calendar. Describe the week in plain language, review the draft, edit it, then accept it when it looks right.

A1 · Part 1 of 5

the web app

Type the week, review the draft, and accept what looks right. The app is Next.js App Router with thin route files and feature folders for auth, chat, calendar, inspector, and AI scheduling.

Product flow

  1. Connect a Google account.
  2. Type a scheduling request in natural language.
  3. Sched drafts calendar events or deadline-style tasks.
  4. Review the draft on day, week, or month views.
  5. Refine with another prompt or edit visually by dragging and resizing.
  6. Accept to save the final items to Google Calendar or Google Tasks.

Oct 19–25

Mon 19 Tue 20 Wed 21 Thu 22 Fri 23 Sat 24 Sun 25
10:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:00
Algorithms class 13–15
Thesis consultation 10–11
Group project meeting 15–16:30
Algorithms class 10–12
Lab assistant shift 16:30–17:30
Sprint review 13–14
Futsal 7–8:30
Live demo Sched, rebuilt in HTML from the app's components, replaying one real Gemini reply against a made-up week. Open a draft, drag it, then confirm or discard it. Nothing here reaches Google.

A2 · Part 2 of 5

pending drafts

AI suggestions stay pending until the user accepts them. Zustand owns the client-side scheduling state, so chat, calendar, inspector, and pending drafts stay synchronized without forcing every interaction through a route transition.

  • An inspector panel for title, time, duration, type, AI reasoning, conflict status, refine input, and accept/discard actions.
  • Drag and resize interactions for draft events.
  • Conflict indicators when proposed items overlap existing calendar events.

A3 – A5 · Parts 3 to 5

the server

Server-side infrastructure lives in lib/: Better Auth for Google OAuth sign-in, and Drizzle over Postgres. A timezone guard compares the browser timezone with the Google Calendar timezone.

  • A3 the server Better Auth · Drizzle
  • A5 Postgres via Drizzle ORM

A4 · Part 4 of 5

AI & Google

Gemini 2.5 Flash, through @google/genai, turns the request into drafts. The Google Calendar and Google Tasks clients read the week for context and save what the user accepts: timed items as events, deadline-style items as tasks.

Key technical decisions

  1. Existing events are read-only.

    The most important product constraint is safety. Sched never modifies existing Google Calendar events. Existing events are read-only context for scheduling, and AI-generated suggestions remain pending until the user accepts them.

Current status

Archived.

A deployed build remains available; the public entry point is the Google login screen. The app requires Google Calendar access because the core workflow depends on reading calendar context and saving accepted events or tasks.