Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Maintenance Mode Bundle Laravel Package

nowo-tech/maintenance-mode-bundle

nowo-tech/maintenance-mode-bundle provides a simple maintenance mode for PHP applications: toggle downtime, show a friendly holding page, and control who can access the app during maintenance windows. Lightweight, configurable, and easy to integrate.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Feature scoping — "maintenance mode" as a real product surface, not a flag. The bundle packages three capabilities that map directly to distinct product requirements, and each is a separate scope decision:

  • Configurable exclusions (IP allowlist, paths/routes, possibly roles) → answers "who still gets through during a deploy or data migration?" This is the feature that determines whether maintenance mode is usable for staged rollouts, internal QA during freeze, or partner-only availability.
  • Panel CRUD → answers "can a non-engineer turn this on at 2am?" If yes, it becomes an ops/comms workflow feature (with audit trail and scheduling questions attached); if no, it stays a deploy-time config flag.
  • Pluggable storage → answers "does the flag survive a rolling restart across N app servers?" Single-server file storage is a toy; shared storage (Redis/DB) is the difference between a working kill switch and a per-node lottery.

Build vs. buy. Maintenance mode is commodity functionality — roughly a listener/kernel hook plus a response template. Buying is justified only if you actually consume the panel CRUD and pluggable storage; if you need a flag read from config in a single middleware, build it in a day and own it. The bundle's value is the admin UI + storage abstraction, not the 503 response.

Roadmap inputs it surfaces (gaps to plan around, not promises from this package). Scheduled windows with start/end times; per-tenant or per-brand maintenance state in a multi-tenant product; bypass tokens for external testers without IP coordination; differentiating "planned maintenance" from "incident/outage" in status messaging; correct 503 + Retry-After semantics and CDN/LB behavior so probes and health checks aren't served a maintenance page.

Use cases where it earns its place. Pre-release data migrations on a live product; regional or tenant-scoped blackouts for compliance windows; freezing checkout while keeping catalog browsable; giving support a self-serve toggle instead of paging an engineer.

The Laravel caveat is a decision, not a footnote. Despite the framing, this is a Symfony bundle (Composer constraints ^7.4 || ^8.0, PHP >=8.2 <8.6). It does nothing for a Laravel codebase — Laravel teams should use php artisan down/up or an equivalent Laravel package. If your portfolio spans both frameworks, treat this as "Symfony-only; no shared component," which likely kills any consolidation argument.

Maturity signal for roadmap weighting. 0 stars, 0 dependents, score 20 — zero external validation. Do not put this on a critical path or in a customer-facing SLA story until it has survived an internal pilot with a pinned version and a code review of the listener and storage adapters.

When to Consider This Package

Adopt (pilot) when:

  • You are on Symfony 7.4 / 8.0 / 8.1 with PHP 8.2–8.5 — the supported window is narrow, so verify your matrix first; Symfony 8.x requires PHP 8.4+.
  • You need the admin panel (toggle without a deploy) and exclusions (allowlist by IP/path) and shared storage — i.e., you'd otherwise build three things rather than one.
  • You can pin an exact version, vendor-review the small surface area (a kernel listener, a controller/CRUD, a storage interface), and accept MIT/no-support terms with an internal owner.
  • The maintenance page is cosmetic/operational, not a compliance control — i.e., a bug in it costs minutes of confusion, not revenue or an audit finding.

Look elsewhere / build it when:

  • You're on Laravel. Out of scope entirely. Use the framework's built-in maintenance mode; don't port this.
  • You're on PHP < 8.2, Symfony ≤ 7.3, or Symfony 8.2+ — the declared constraints exclude you and there's no dependents/community pressure to expect fast broadening.
  • You need only a single-server flag read from config. A ~100-line listener is cheaper than a dependency you must track.
  • You require SSO/RBAC on the admin panel, audit logging, multi-tenant scoping, or scheduled windows with timezone semantics — none of these are evidenced; you'd be committing to fork-and-maintain.
  • You need enterprise support, an SLA, security disclosures process, or a maintained changelog cadence. Zero stars/zero dependents means zero field hardening: expect to discover the CDN, health-check, and asset-serving edge cases yourself.

Verification before any commitment: confirm the release timeline (the listed last release, 2026-10-28, is future-dated relative to normal review cycles — treat the version metadata as unconfirmed), inspect the actual storage adapters and whether the listener runs before/after the firewall, and confirm the response is a true 503 with Retry-After and a noindex posture rather than a 200.

How to Pitch It (Stakeholders)

For executives (one paragraph). We evaluated a small open-source Symfony component that adds a professional maintenance-mode capability: an admin screen to switch the site off, rules for who can still get in, and storage that keeps that state consistent across all servers. It is MIT-licensed and free, but it is a single-maintainer project with no external users, so it carries dependency risk rather than license cost. Recommendation: treat it as a low-cost pilot, not a platform commitment — it can replace a hand-rolled toggle and give support staff self-serve control, but it must not sit on a revenue-critical path without an internal owner and a fallback. It is Symfony-only and does not serve our Laravel work.

For engineering (what you're actually signing up for). Small, conventional bundle: a maintenance listener, a CRUD panel for state, configurable exclusions, and a storage abstraction. Compatible with Symfony ^7.4 || ^8.0 on PHP >=8.2 <8.6. Cost is low integration effort plus a one-time review of the listener and the storage adapter you choose (Redis/DB, not filesystem, if you run more than one node). Ask for: version pin, a smoke test covering allowlisted IP + allowlisted path + a health-check endpoint, and confirmation of 503/Retry-After behavior in front of our CDN. Budget a fork-and-own contingency — with zero dependents, we are the first real user and should behave accordingly. If we only need a config-driven flag, build the ~100-line version instead and skip the dependency.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource