About ET · Event Publishing Guide

How to create
a new ET event

An internal instruction sheet for building structured event pages in this repo. Use it when collecting details, creating the event JSON, and verifying the generated event page and archive listing.

18
Required event fields
4
Core build steps
1
Events source folder
Source folder
src/content/events/
Schema file
event.schema.json
Rebuild command
python3 scripts/rebuild_site.py

What to collect before building the event

Core identity

  • title
  • summary
  • event_type and event_type_label
  • slug based on the public event page name

Date and time

  • start_iso and end_iso
  • display_date
  • display_date_compact
  • display_time
  • timezone

Location and registration

  • location_name
  • location_type: virtual, in_person, or hybrid
  • location_url when useful
  • registration_url
  • source_url if there is an origin page

Audience and content

  • audiences array
  • tags array
  • hosts array
  • agenda array
  • sections array
  • hero_image_src optional override for a specific event photo

How the event JSON should be structured

01

Use one JSON file per event

Create a new file in src/content/events/. Keep the filename short and predictable, usually based on the event title and date.

02

Match the public page slug

The slug should look like et-event-your-event-name.html. The build uses that slug to generate the final public page.

03

Keep arrays clean and specific

Use short audience labels, concise tags, a readable agenda, and content sections that are easy to scan. Avoid filler or duplicate bullets.

04

Stay aligned to the schema

The repo already includes src/content/events/event.schema.json. If a field is required there, it should be present in the new event file.

Minimum event skeleton

{
  "slug": "et-event-your-event-name.html",
  "title": "Event Title",
  "summary": "One-sentence event summary.",
  "status": "scheduled",
  "start_iso": "2026-04-15T10:00:00-05:00",
  "end_iso": "2026-04-15T11:00:00-05:00",
  "display_date": "Wednesday, April 15, 2026",
  "display_date_compact": "Apr 15, 2026",
  "display_time": "10 to 11 a.m.",
  "timezone": "America/Chicago",
  "location_name": "Microsoft Teams",
  "location_type": "virtual",
  "location_url": "",
  "event_type": "workshop",
  "event_type_label": "Workshop",
  "registration_url": "https://example.com",
  "source_url": "",
  "hero_image_src": "media/your-event-photo.jpg",
  "audiences": ["Faculty", "Staff"],
  "tags": ["AI", "Workshop"],
  "hosts": ["Enterprise Technology"],
  "agenda": [{ "time": "10:00 a.m.", "label": "Welcome" }],
  "sections": [{ "title": "About this event", "paragraphs": ["..."] }]
}

The fastest way to add an event in this repo

01

Collect the event details

Get the title, summary, date, time, timezone, location, registration link, hosts, event type, tags, and a short agenda before asking for the build.

02

Start with the event starter

Run python3 scripts/new_content_starter.py event "Your Event Title" to create a safe draft starter in tmp/content-starters/events/. When the content is ready, rerun with --live or copy it into src/content/events/.

03

Rebuild the site

Run python3 scripts/rebuild_site.py. The event page and archive entry are generated from the structured content automatically.

04

Verify both outputs

Check the generated event page and the archive listing in et-events.html. Confirm the date, time, status, registration link, and event type badge all render correctly.

What to send if you want Codex to build the event for you

Paste this block and fill in the values. It maps directly to the event model used in this repo.

Title:
Date:
Start time:
End time:
Timezone:
Location name:
Location type:
Registration URL:
Summary:
Hosts:
Event type label:
Tags:
Hero image path (optional):
Audiences:
Agenda:
Description / sections:

Final checks before you call the event done

Content checks

  • The title, summary, and labels read cleanly in the archive card.
  • The agenda is in a sensible order and uses readable times.
  • The sections are short enough to scan.

Data checks

  • start_iso and end_iso use the right offset.
  • location_type matches the schema exactly.
  • Links for registration and source are valid.

Render checks

  • The event page builds without errors.
  • The event appears in et-events.html.
  • If a photo was provided, the event hero uses it; otherwise one of the shared hero images appears.
  • The status, badge, and metadata display correctly.