Latest content
Most recently dated site entry
{latestEntryTitle}
{latestEntryDateIso ? ( ) : ({latestEntryDate}
)}Service status
Build-time connections
Publishing workflow
How changes reach the website
- Generate the event snippet or speech file here.
- Add the generated content to the repository.
- Commit and deploy the static site.
Calendar
Create a calendar event
Fill in the event details. The repository-ready snippet updates automatically as you type.
Event details
Required fields are marked with an asterisk.
Generated snippet
Ready for src/data/events.ts
calendarEvents, then commit and deploy the site.
Content library
Manage speeches
Search the archive, open an existing speech, or generate a new Markdown file.
Speech library
{speechAdminEntries.length} files in the archive
-
{speechAdminEntries.map((speech) => (
- ))}
Try a different title, year, or speaker.
New speech
Generate a Markdown file for content/speeches.
Configuration
Settings and connections
Check the build-time services used by the public website and review the publishing workflow.
Contact form
Receives messages submitted from the website.
PUBLIC_CONTACT_FORM_ENDPOINT
Add PUBLIC_CONTACT_SUBMISSIONS_URL to link the submissions inbox here.
Analytics
Plausible reporting for public website visits.
PUBLIC_PLAUSIBLE_DOMAIN}
Add PUBLIC_ANALYTICS_DASHBOARD_URL to link reports here.
Admin access
Authentication is enforced by the hosting proxy.
familyfed_admin
The static page cannot enforce login on its own. Keep the admin host and content endpoints behind the proxy.
Static publishing
The admin generates handoff files rather than saving directly.
npm run build
From admin to published
Use the same three-step process for events and speeches.
Complete the form and check the generated output.
Paste the event snippet or place the downloaded Markdown file.
Commit the change and run the normal static-site deployment.