All projects

Smart Scheduler.
Your calendar, thought about.

A planner that looks at your todos, your prescheduled events and what time of day you actually get things done — then proposes a schedule you'd have written yourself, if you had the time. Approve it with one tap and it writes straight back to Google Calendar.

Year
2024
Role
Solo build
Stack
Next.js · Gemini · Calendar
Status
Daily driver
Smart Scheduler — brain dumpSmart Scheduler — AI previewSmart Scheduler — schedule viewSmart Scheduler — energy mapSmart Scheduler — settings

Overview

Most scheduling tools treat time as a dumb container — here's a slot, shove a task in. Smart Scheduler treats time like the scarce, opinionated resource it actually is: you don't do deep work at 9pm, you don't take meetings before coffee, and Tuesdays feel different from Thursdays.

You brain-dump your todos in a natural shorthand — durations, categories and priority flags become inline chips as you type — and the app reads your Google Calendar plus a personal energy map of your day. Gemini proposes a full plan that fits the new tasks into the gaps: focus work in your peaks, admin in your dips, meals at meal times. Review, drag-to-refine, hit Add to Calendar.

What I built

  • Chip-composer brain dump that parses task name, duration, category and priority live as you type — one input field, no extra UI
  • Editable energy map (peak / steady / dip windows) that feeds the AI prompt so plans actually match your rhythm
  • Three views of today's calendar — list, timeline, hybrid
  • Multi-calendar support
  • Installable PWA shell

How the AI piece works

The model gets the current time, today's locked events, the user's energy windows tagged PEAK / STEADY / DIP, and the todos left to place. The prompt enforces a handful of rules: never schedule in the past, leave ten minutes between blocks, match category to time of day, never overlap a locked event, and drop anything that genuinely won't fit today.

The reply has to be strict JSON. A balanced-brace extractor pulls it out even if Gemini wraps it in prose or fences, then every item is validated server-side — unknown categories coerced, priorities boolean-checked, times sanity-checked. If the first response doesn't parse, the pipeline retries once with a schema-correction hint before surfacing an error to the UI.

Stack

Next.js 15 · React · Google Gemini · Google Calendar API · MongoDB · @dnd-kit · PWA

Next project
Chat-LECS