Motivation
Finance hearing dates are managed through a dedicated admin panel and stored as FinanceHearingDate records, separate from the CalendarEvent model. The public meetings/calendar page (/meetings) only fetches CalendarEvent records via GET /api/events. As a result, scheduled finance hearing timeslots never appear on the public-facing calendar, even when the hearing season is active.
Deliverables
- Either: surface finance hearing dates on the public calendar by fetching
GET /api/finance-hearings alongside events on the meetings page and merging the results into the CalendarWidget
- Or: when a finance hearing date is created/updated in the admin panel, automatically create/sync a corresponding
CalendarEvent (type "Finance Hearing") so it flows through the existing calendar pipeline
- Finance hearing slots marked as full (
is_full = true) should be visually distinguishable on the calendar (e.g. greyed out or labeled "Full")
Important Notes
- The
CalendarWidget accepts a CalendarEvent[] prop; the cleanest frontend-only approach is to transform FinanceHearingDate objects into synthetic CalendarEvent-shaped objects before passing them in
- If taking the backend sync approach, deleting a
FinanceHearingDate should also remove the corresponding CalendarEvent
Motivation
Finance hearing dates are managed through a dedicated admin panel and stored as
FinanceHearingDaterecords, separate from theCalendarEventmodel. The public meetings/calendar page (/meetings) only fetchesCalendarEventrecords viaGET /api/events. As a result, scheduled finance hearing timeslots never appear on the public-facing calendar, even when the hearing season is active.Deliverables
GET /api/finance-hearingsalongside events on the meetings page and merging the results into theCalendarWidgetCalendarEvent(type"Finance Hearing") so it flows through the existing calendar pipelineis_full = true) should be visually distinguishable on the calendar (e.g. greyed out or labeled "Full")Important Notes
CalendarWidgetaccepts aCalendarEvent[]prop; the cleanest frontend-only approach is to transformFinanceHearingDateobjects into syntheticCalendarEvent-shaped objects before passing them inFinanceHearingDateshould also remove the correspondingCalendarEvent