---
title: Public Homepage
description: Dynamic landing page that aggregates campaigns, shifts, media, events, and platform stats for public visitors.
icon: material/home-variant
tags:
  - guide
  - admin
  - 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
