Skip to main content

Documentation

No results found.
Features

Maintenance Mode

WebProCMS ships with a built-in Maintenance Mode for temporarily taking a live site offline while you make changes. When enabled, the public sees a standalone branded "we'll be back soon" page served with an HTTP 503 + Retry-After...

WebProCMS ships with a built-in Maintenance Mode for temporarily taking a live site offline while you make changes. When enabled, the public sees a standalone branded "we'll be back soon" page served with an HTTP 503 + Retry-After — the signal search engines read as "temporary outage, don't deindex anything" — while signed-in staff keep browsing (and changing) the live site. It's off by default and adds zero overhead to sites that don't use it.


Maintenance Mode vs. Coming Soon

The CMS has two whole-site gates. They look similar but answer different situations:

Coming Soon Maintenance Mode
When The site hasn't launched yet A live site is being changed
HTTP status 200 — the placeholder is the site until launch 503 + Retry-After — a temporary outage; rankings stay intact
Default copy "We're launching soon" "We'll be back soon"

If both are enabled at once, visitors see the maintenance page (its middleware runs first).

What it's for

  • Take the public site down for content restructuring, a redesign pass, data imports, or anything you don't want half-finished states of visible.
  • Keep working: staff at Manager and above see the real site the whole time, so they can make and verify the changes.
  • Flip it back off the moment you're done — no redeploy, no file swap, and the 503 means search engines never indexed the placeholder or dropped your pages.

How it works

  • The public sees the gate. Every guest, member, or below-Manager visitor gets the maintenance page for any public URL, served with status 503 and a Retry-After: 600 header (plus a noindex, nofollow meta as a belt-and-suspenders).
  • Staff see the live site. Signed-in staff at the Manager role or above keep seeing real pages so they can work. A small reminder banner floats at the bottom of the page telling them the public is currently gated, with a one-click Preview it link.
  • Staff can preview the gate. Clicking Preview it (or visiting ?maintenance-preview=on) flips a per-session toggle so the staff member sees exactly what the public sees, with a Back to live site link to return. The toggle is staff-only — a visitor appending the query string can't use it.
  • Authentication and the dashboard always stay open. Login, password reset, two-factor, SSO, passkeys, the whole dashboard, framework/asset endpoints, and internal beacons are never gated — so an admin can always log in to lift the mode.

Turning it on

Dashboard → Settings → General → Maintenance Mode. Flip the switch, then configure the page:

  • Eyebrow label — the small pill above the heading (default: "Maintenance"). Leave blank to hide.
  • Heading — the large headline (default: "We'll be back soon").
  • Message — the supporting paragraph.

Leave any copy field blank to hide it. The page automatically uses your site logo and colors from the Branding page (Dashboard → Settings → Branding) — including the dark-logo variant on dark systems — and falls back to your site name when no logo is set.

Architecture

The gate is a web-group middleware (MaintenanceModeGate) backed by a small support class (MaintenanceMode). Both this gate and Coming Soon extend a shared base — PublicSiteGate (request flow, staff pill) over SiteGate (staff rules, exempt paths, copy settings) — so the two gates' bypass semantics and always-open path list are identical by construction. The standalone page is resources/views/maintenance.blade.php, a thin wrapper over the shared partials/site-gate-page — fully self-contained (inline CSS + the branding style block), so it renders identically on build and node-free installs with no CSS-bundle dependency.

Cache safety is structural. The middleware runs before the route-level response cache (CacheResponse), so a gated request is short-circuited and never written to the shared guest cache. Signed-in staff bypass the response cache entirely (GuestOnlyCacheProfile), so the per-staff preview toggle can never poison what guests see. Toggling the mode (or editing its copy) clears the response cache so the change takes effect immediately.

When disabled, every callsite short-circuits in a single Setting read and the public site behaves byte-identically to a build without the feature.

Distinct from update-window maintenance. The CMS updater (UpdateMaintenance) wraps the destructive seconds of a CMS update in the framework's maintenance mode — a pre-rendered 503 short-circuit that blocks everything, dashboard included, before any application code loads (a mid-copy tree can't 500). This user-facing Maintenance Mode is an application-level gate meant for however long your work takes, and it deliberately keeps auth + dashboard open. The two coexist without interaction.

Settings keys

All under the maintenance.* namespace:

Key Meaning
maintenance.enabled Master on/off switch (bool, default false)
maintenance.eyebrow Small pill label above the heading
maintenance.heading Large headline
maintenance.message Supporting paragraph

The logo and palette are read from the existing Branding settings (branding.logo_url, branding.dark_logo_url, and the brand color tokens) — the maintenance page has no logo of its own.