AddThisFeature

Maintenance Mode

Pause the app on purpose instead of serving a generic 500.

moderate Admin & Operations

What it adds

An operator-controlled outage window that shows a real maintenance page, lets staff through, and tells API clients the truth.

What your agent is told to do

5
  1. 1

    Make the mode a runtime flag an operator can flip without a deploy, and store it somewhere that stays reachable when the database is the thing being maintained.

  2. 2

    Allowlist bypass for authenticated staff and for the health check endpoint, so the people fixing the problem can still use the app and the load balancer does not remove every instance.

  3. 3

    Return 503 with a Retry-After header for API and crawler requests, and render the maintenance page for browsers. A 200 on a maintenance page tells search engines your content is now an apology.

  4. 4

    Support a read-only variant where GETs continue to work and writes are refused with a clear message, since most maintenance only needs writes stopped.

  5. 5

    Do NOT let background jobs, webhook receivers, and scheduled tasks keep mutating data while the UI is blocked. Pause or queue them explicitly, or the maintenance did nothing.

Edge cases it handles

6
  • The maintenance page must render without hitting the database or any service that might be down — static assets, inline styles, no dynamic content.
  • Let the operator set an expected end time and a short message; a page with no information generates more support load than the outage.
  • In-flight requests when the flag flips should be allowed to finish rather than cut off mid-write.
  • Webhook senders that get a 503 will retry; make sure the retry window is compatible with Retry-After or you will lose events.
  • Turning maintenance off must take effect immediately across every instance, not on the next cache expiry or restart.
  • Staff bypass must be identity-based, not a shared query-string token that leaks into logs and chat.

Definition of done

8
  • An operator can enable and disable maintenance without deploying.
  • Browsers get a maintenance page; API and crawler requests get 503 with Retry-After.
  • Staff and health checks bypass the block.
  • The page renders with the database unavailable.
  • Background jobs and webhook processing are paused or queued during the window.
  • Read-only mode is available and blocks writes with a clear message.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.