Skip to Content
FeaturesBranding

Branding

The Branding page (left rail in the admin panel) controls how your PicPeak instance looks: company name, logo, colors, fonts, footer, and the public-facing landing page. Anything brand-related that isn’t tied to a specific event lives here.

For per-event theming (specific layout, presets, custom CSS), see Themes & Branding.

Identity

SettingWhat it does
Company nameShown in the page title (<title> tag), the email header, the gallery footer, and as the OG og:site_name.
TaglineOptional one-liner under the company name on the public landing page.
Support emailLinked in the gallery footer (“Support” link) and the password-reset email body.
Footer textCustom HTML/text rendered in the gallery footer. Sanitised — no scripts.

Logo & favicon

SettingWhat it does
Logo uploadPNG, JPG, or SVG. Recommended: transparent PNG, ~400×120 px. Used in the admin header, gallery header, and as the default OG image for share previews.
Logo sizesmall / medium / large — affects max-height in the gallery header.
Logo positiontop-left / top-center / top-right — placement in the gallery hero.
FaviconSquare PNG, 32×32 minimum. Falls back to picpeak-logo-transparent.png if not set.

Uploaded files are served from /uploads/logos/ and /uploads/favicons/ and cached for 7 days at the nginx layer.

Colors

The color picker exposes four tokens that propagate through the entire UI as CSS variables:

TokenWhat it controls
PrimaryButtons, active nav state, links, focus rings
AccentHover states, secondary buttons, badges
BackgroundPage background
TextBody text

You can pick a hex value or click a preset swatch. Each preset is a coordinated palette designed by the PicPeak team — useful as a starting point.

Theme presets

Theme presets bundle layout + color + typography choices into one click. The full list:

PresetLayoutVibe
defaultGridNeutral, photographer-default
elegantWeddingMasonrySoft pastels, serif headings
modernMasonryMasonry (Flickr-style)High-contrast, bold
birthdayFunMosaicBright, playful
corporateTimelineTimelineRestrained, structured
classicJustifiedJustifiedMagazine-grade rows
momentsMosaicMosaicMixed-size blocks
storyModeVertical scrollInstagram Stories-style
galleryPremiumCarousel + lightboxHigh-end product showcase

Per-event theme override always wins over the global default — admins can change the look for an individual gallery without affecting the default for new events.

Hero divider

The slope between the gallery hero and the photo grid:

wave (default), straight, angle, curve, none.

Style is controlled by the active theme preset but can be overridden per-event.

Watermark

The brand watermark applied to downloaded images (and optionally to thumbnails) when the per-event “Watermark downloads” toggle is on.

SettingWhat it does
Watermark logoPNG with transparency. Different file from the brand logo.
Positiontop-left / top-right / bottom-left / bottom-right / center
Opacity0–100 %
SizeRelative to image width (e.g. 15 %)

Watermarks are baked into the downloaded copy on demand — never into the original on disk.

Public landing page

The page served at / when nobody is logged in. By default this redirects to /admin/login. Enable the public-site toggle on this page to serve a custom HTML/CSS welcome page instead.

SettingWhat it does
Enable public siteMaster toggle. Off = redirect to admin login.
HTMLFull HTML body. Sanitised — <script> tags stripped.
Custom CSSScoped to the public landing page.

The HTML editor supports a small set of placeholders that are substituted at render time:

{{ company_name }} — your branded company name {{ company_tagline }} — your tagline {{ support_email }} — clickable mailto link {{ brand_logo_url }} — URL of the uploaded logo {{ brand_primary_hex }}, {{ brand_accent_hex }}, etc. — color tokens

When a gallery URL is shared on WhatsApp, Facebook, Slack, etc., the link preview that appears in chat is fetched by the receiving platform — not generated client-side. PicPeak serves three different responses depending on who’s asking:

FetcherWhat gets servedConfigured by
Known social crawlers (WhatsApp, Facebook, Slack, Telegram, Discord, LinkedIn, Pinterest, Mastodon, Bluesky, etc.) hitting /gallery/<slug>A small HTML page with per-event og:title (event name) + og:description (welcome message or fallback) + og:image (brand logo, or hero photo if opted in)Admin Branding (company name, logo) + per-event settings
Regular browsers hitting /gallery/<slug>The SPA shell — React loads, fetches gallery data, updates the document title client-sideAdmin Branding (company name → <title>)
Anything else: link-preview services that cache metadata with a non-crawler User-Agent (WhatsApp Business API, Twilio, LinkPreview.net, Slack ImgProxy, etc.)The static SPA shell as-is — no JS executes, no per-event lookup, just the raw HTML headBRAND_TITLE / BRAND_DESCRIPTION env vars on the frontend container

The first two paths cover most cases automatically — admin Branding settings flow through. The third path is what bites you when someone shares a gallery via WhatsApp’s Business API or a marketing automation tool: those fetchers don’t carry a recognisable crawler UA, so they end up reading the static shell.

Branding the static fallback

Set these two env vars on the frontend container (root .env file, picked up by both docker-compose.yml and docker-compose.production.yml):

BRAND_TITLE=Your Studio Name BRAND_DESCRIPTION=Wedding and event photography by Your Studio Name.

Then restart the frontend service:

docker compose -f docker-compose.production.yml up -d frontend

No frontend rebuild required — the values are substituted into index.html at container start via envsubst. Defaults to BRAND_TITLE=PicPeak and a generic description when unset, so existing deployments see no behaviour change until you flip them.

Receiving platforms cache link previews aggressively — WhatsApp Business in particular can hold a preview for hours to days. After changing BRAND_TITLE, expect previously-sent links to keep showing the old metadata until the receiver re-crawls. New sends pick up the change immediately.

See Environment Variables → Social link preview fallback for the reference table.

White-label admin

The admin panel itself shows your logo and company name in place of the PicPeak branding when these fields are set. The “Powered by PicPeak” footer link can be hidden from the public site only — the admin panel always credits the project (this is a community norm, not a license requirement).

Last updated on