Build Log
Member Event Authoring, Full-Field Editing, and Redone User Guides
August 3, 2026
Members can now propose and edit their own events (auto-assigned as planner, free choice of status/visibility), coordinators gained full-field editing, date/time became optional for idea-stage events with a real DB-level guarantee, home/announcements pages got real content previews, a calendar view landed on the events page, and both user guides were rewritten with fresh screenshots to match.
Timeline
What shipped
products/medinaCHF/lib/db/schema.ts — events.startsAt made nullable, with a new CHECK constraint (events_starts_at_required_unless_idea) enforcing the idea/date rule at the DB level, not just in app code
products/medinaCHF/lib/constants/events.ts (new) — single source of truth for status/visibility enums, labels, colors, terminal-status list, and the dateRequiredForStatus/isValidStatus/isValidVisibility helpers, replacing 3-4 duplicated copies across the app
products/medinaCHF/lib/actions/events.ts — createEvent rewritten for role-aware planner/status/date logic (members force-set to their own family as planner, free choice of status/visibility; coordinators unrestricted); new updateEvent action for full-field editing, scoped for members to their own planned, non-terminal-status events; updateEventStatus guarded against violating the new DB constraint
products/medinaCHF/components/coordinator/CreateEventForm.tsx — expanded into a shared, role-aware create/edit form covering every event column, with conditional date requirement and a status field
products/medinaCHF/components/EventCalendar.tsx (new) — dependency-free month-grid calendar for the member events page
products/medinaCHF/components/MemberEventsView.tsx (new) — client-side list/calendar toggle, server-fed data
New edit routes: app/coordinator/events/[id]/edit/page.tsx, app/member/events/[id]/edit/page.tsx
Member home page (app/member/page.tsx) — Announcements card now previews the latest real announcement instead of a static 'View all announcements' link
Member announcements list (app/member/announcements/page.tsx) — each item now shows a body preview, not just a title
Member planning board (app/member/planning-board/page.tsx) — new 'Ideas that need a planner' section surfacing idea-status events with no plannerFamilyId
Both user guides (app/member/guide/page.tsx, app/coordinator/guide/page.tsx) rewritten to describe the new event flows; scripts/seed-guide-shots.mjs and cleanup-guide-shots.mjs extended with a paired idea-stage event; all 18 guide screenshots recaptured against the live UI
“we don't have the data needed to create the retro? seems odd. you've done this before for abandoned sessions”