How donyon67k/syllabus-planner works
Lily is a student course and assignment planner. Its main workflow loads courses and items into a shared planner model, derives due dates, and presents work in Today and calendar views; users can edit items and courses. It also has syllabus-import, Canvas-sync, and AI-change API surfaces. The README is only the generic Next.js starter README, so those capabilities are inferred from the repository paths and component names. Unsampled API and settings behavior is shown without guessed connections.
Main entry points: today/page.tsx Today dashboard · usePlanner.ts Planner state · [id]/page.tsx Course detail · calendar/page.tsx Calendar views
Components 26
Planning views
- Today dashboard
app/(app)/today/page.tsx - Calendar views
app/(app)/calendar/page.tsx - Day week month
components/app/CalendarViews.tsx - Course list
app/(app)/courses/page.tsx - Course detail
app/(app)/courses/[id]/page.tsx - Settings
app/(app)/settings/page.tsx - App shell
components/app/AppShell.tsx - Study summaries
components/app/TodayCards.tsx
Course and item authoring
- Course form
components/app/CourseForm.tsx - Syllabus import
components/SyllabusImport.tsx - Item editor
components/app/ItemEditor.tsx - Item form
components/app/ItemForm.tsx - Item row
components/app/ItemRow.tsx - AI change prompt
components/app/AskBar.tsx
Planner services
- Planner state
lib/usePlanner.ts - Date calculations
lib/dates.ts - Apply AI changes
lib/aiChanges.ts - Browser database client
lib/supabase/client.ts - Server database client
lib/supabase/server.ts - Change events
lib/events.ts
External integrations
- AI change API
app/api/ai-change/route.ts - Syllabus parse API
app/api/parse-syllabus/route.ts - Canvas sync API
app/api/canvas-sync/route.ts - Supabase
- Gemini
Other components
- Student
Connections 22
- Student → Today dashboard: views today
- Student → Calendar views: opens calendar
- Today dashboard → Planner state: loads items
app/(app)/today/page.tsx - Calendar views → Planner state: loads items
app/(app)/calendar/page.tsx - Calendar views → Day week month: renders views
app/(app)/calendar/page.tsx - Today dashboard → Study summaries: renders summaries
app/(app)/today/page.tsx - Course detail → Course form: renders form
app/(app)/courses/[id]/page.tsx - Course list → Course form: renders form
app/(app)/courses/page.tsx - Course detail → Syllabus import: offers import
app/(app)/courses/[id]/page.tsx - Course detail → Item editor: opens editor
app/(app)/courses/[id]/page.tsx - Today dashboard → Item editor: opens editor
app/(app)/today/page.tsx - Item editor → Item form: renders form
components/app/ItemEditor.tsx - Today dashboard → Item row: renders rows
app/(app)/today/page.tsx - Day week month → Item row: renders rows
components/app/CalendarViews.tsx - Planner state → Browser database client: queries data
lib/usePlanner.ts - Planner state → Date calculations: derives due dates
lib/usePlanner.ts - AI change API → Server database client: loads user data
app/api/ai-change/route.ts - AI change API → Gemini: requests changes
app/api/ai-change/route.ts - Apply AI changes → Browser database client: writes changes
lib/aiChanges.ts - Apply AI changes → Change events: notifies changes
lib/aiChanges.ts - Browser database client → Supabase: connects to
- Server database client → Supabase: connects to