# FamilyFed.ie admin notes

The admin dashboard is generated at `/admin/index.html`. To make
`https://admin.familyfed.ie/` show the dashboard, configure the web server or
reverse proxy for that hostname to serve `dist/admin/index.html` as its root
document.

Protect `admin.familyfed.ie` at the web server, reverse proxy, or hosting layer
with OAuth2/OIDC through Pocket ID. Require the Pocket ID user group
`familyfed_admin`. The generated page has `noindex`, but a static page cannot
enforce a secure admin login by itself.

If Pocket ID says `Invalid callback URL`, the FamilyFed Admin OIDC client must
allow `https://admin.familyfed.ie/oauth2/callback`. See `docs/OAUTH2-AUTH.md`
for the exact proxy/auth requirements.

## Content changes

- Calendar events live in `src/data/events.ts`.
- Speeches live in `content/speeches/<year>/<slug>.md`.
- The admin page includes builders that generate valid snippets/files for both.

Because this is a static Astro site, the browser cannot securely write content
back into the repository by itself. Commit generated content changes to the
repository and deploy as usual.

## Contact form

The default hosted form endpoint and submissions inbox are configured in
`src/config/contact.ts`. The deployed form sends submissions through Formspree.
Set `PUBLIC_CONTACT_FORM_ENDPOINT` during the build only when overriding the
committed endpoint with another Formspree form or hosted provider.

Optional variables:

- `PUBLIC_CONTACT_RECIPIENTS`: comma-separated mail fallback recipients.
- `PUBLIC_CONTACT_SUBMISSIONS_URL`: override for the admin submissions-inbox URL.

If no endpoint is configured, the form falls back to opening the visitor's email
application with the message filled in.

For deployment, add the matching variables as Forgejo secrets. The deploy
workflow passes them into the Astro build.

## Analytics

Cloudflare Web Analytics is enabled for the proxied `familyfed.ie` zone. It
automatically injects its beacon at the Cloudflare edge, so the Astro build does
not need a tracking token or script.

The admin dashboard links to Cloudflare Web Analytics by default. Set
`PUBLIC_ANALYTICS_DASHBOARD_URL` only to override that destination.

Plausible remains available as an optional additional provider. Set
`PUBLIC_PLAUSIBLE_DOMAIN=familyfed.ie` to load its tracking script, and set
`PUBLIC_PLAUSIBLE_SCRIPT_SRC` when using a self-hosted Plausible instance.
