Skip to content

# Public Homepage

A dynamic public landing page that showcases your organization and aggregates content from across the platform.

## Sections

The homepage assembles its content from enabled modules. Sections are only displayed when their corresponding module is active and has data to show.

- Hero banner — organization name, logo, tagline (configurable via Settings), and call-to-action buttons for campaigns and volunteer signups
- Stats counters — active campaigns, total emails sent, and volunteer signups (shown only when counts are greater than zero)
- Featured campaigns — up to 3 active campaigns, sorted by highlight status then creation date, with email counts and descriptions
- Upcoming shifts — up to 3 open shifts with date, time, location, and spots remaining
- Latest videos — up to 4 recently published videos from the media library, displayed in a horizontal scroll strip with thumbnails and durations
- Upcoming events — up to 3 future events from Gancio with date, location, and tags
- Recent activity — a compact activity feed showing the latest platform actions

## Data & Caching

All homepage data is fetched from a single API endpoint (`/api/homepage`) and cached in Redis for 2 minutes. Individual section queries use `Promise.allSettled` so that a failure in one module (e.g., Gancio being offline) does not prevent the rest of the page from loading.

## Configuration

- Organization name and logo — set via Settings > Organization
- Homepage tagline — set via the `homepageTagline` field in site settings
- Module visibility — controlled by feature flags (enableInfluence, enableMap, enableMediaFeatures, enableEvents, enablePayments, enableLandingPages)

## Public Routes

- `/home` — public homepage