P-003 – Events Page
P-003 – Events Page
Purpose / Big Picture
The /events/ page was a placeholder (“No events listed yet.”). This plan
turns it into a real, data-driven events listing consistent with the rest of
the site, and adds the shop’s first event: the Open Mike Poetry Reading on
2026-07-17. After this work, adding or removing an event is a one-file edit in
_data/events.yml; the page renders each event as a card that matches the
existing design language.
Context and Orientation
- The site is a static Jekyll site; visual decisions flow through
_sass/_tokens.scssand reusable components live in_sass/_components.scss. - Navigation already follows a data-driven pattern via
_data/navigation.yml. Events adopt the same approach for a single source of truth. - The
pagelayout wraps content in.prose(max-width 40rem) unlessdisable_prose: trueis set in front matter; the events grid needs the wider container, so it opts out of prose.
Scope
- Add
_data/events.ymlas the single source of truth for events, with inline documentation of each field. - Rewrite
pages/events.mdto sort events by date and render each as a card with an optional photo, formatted date/time, location, cost, and description. - Add an
.event-cardcomponent to_sass/_components.scssusing only design tokens, with a responsive media layout (photo beside details on wide screens, stacked on narrow) that degrades to a clean text-only card when no photo is present. - Seed the first event (Open Mike Poetry Reading, 2026-07-17, 7:00 pm).
Non-goals
- No past-events archive yet; the page shows upcoming events only.
- No calendar feed, RSVP, or ticketing.
- No new dependency, plugin, or JavaScript. The page is fully static.
Accessibility
- One
<h1>(from the layout),<h2>section heading,<h3>per event — no skipped levels. - Events are a semantic list; each photo has descriptive
alttext. - Colors and type reuse existing token pairings that already meet WCAG AA.
Validation and Acceptance
jekyll buildcompletes without warnings./events/renders the seeded event with correctly formatted date (“Friday, July 17, 2026”), location, cost, and description.- The card layout is verified at desktop and mobile widths, with and without a photo.
_data/events.ymlis the only file that needs editing to change events.
Outcomes & Retrospective
Implemented as planned. The events page is now data-driven via
_data/events.yml and the new .event-card component in
_sass/_components.scss. The build was validated with a UTF-8 locale
(RUBYOPT=-EUTF-8) because the sandbox defaults to US-ASCII, which the sass
gem otherwise rejects on the existing non-ASCII comment in _tokens.scss;
GitHub Pages builds under UTF-8 and is unaffected. The Open Mike Poetry Reading
event is live as a text card. The event’s photograph was provided only as a
chat preview, not a file the agent could save, so the image/image_alt
fields are pre-wired but commented out in _data/events.yml; dropping the file
into assets/images/open-mike-poetry-reading.jpg and uncommenting those two
lines renders the two-column media layout with no further changes.
Change Log
- 2026-07-10: Added the data-driven events page, the
.event-cardcomponent, and the first Open Mike Poetry Reading event.