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

Laravel Totem Laravel Package

always-open/laravel-totem

Laravel Totem gives your app a dashboard to manage scheduled tasks: view, create, edit, enable or disable cron entries in the browser, track run history and output, and execute due tasks via an Artisan command instead of relying only on the scheduler.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Laravel Totem is an in-app operational dashboard for Laravel's task scheduler: it stores task definitions and execution history in the application database, exposes a Blade-rendered UI at a configurable route, and lets privileged users run scheduled tasks on demand. It fits our stack only if we are a Laravel/PHP application that already relies on php artisan schedule:run as the single scheduling mechanism. It does not help us observe cron jobs, queue workers, or non-PHP services — those need a separate monitoring path. v13.4.0 is a presentation-layer release (dark mode with Light/Dark/Browser-default switcher) and does not change the package's architectural footprint, database schema, or scheduling behaviour.

Integration feasibility. Straightforward for a Laravel app: Composer install, totem:install, publish config/assets/migrations, run migrations, and add the scheduler cron entry on a single node. No new runtime dependencies, no external service, no queue worker required. The only new work in this release is operational rather than architectural: the published asset set gains css/dark.css, so any deploy pipeline that assumes a fixed asset list needs re-running php artisan totem:assets.

Technical risk. Low, and mostly self-inflicted rather than introduced by the package:

  • High-severity, pre-existing: the dashboard exposes on-demand task execution. If the route's auth gate/middleware is left at defaults in production, this is a remote task-execution surface. Must be explicitly gated before rollout.
  • Medium: Blade override coupling. The release notes explicitly warn that projects overriding layout.blade.php or partials/sidebar.blade.php must hand-merge new lines. This release is direct evidence that UI-level overrides create recurring upgrade tax.
  • Low: cosmetic degradation if the new asset is not published (missing dark.css → unstyled or partially styled dark theme).
  • Low: theme storage key collision if TOTEM_THEME_STORAGE_KEY=theme is set to share state with Filament — intentional, but it couples Totem's theme persistence to Filament's key and should be a deliberate decision.

Key questions.

  1. Which Laravel and PHP versions does v13.x support, and does that match our upgrade horizon?
  2. What is the auth gate for the dashboard route in each environment, and who is allowed to trigger tasks manually?
  3. Do we override Totem's Blade views today? If yes, who owns the merge on each release?
  4. Is the source of truth for task definitions the database (Totem-managed) or code (schedule() in Kernel/routes/console.php)? Drift here is the main long-term risk.
  5. What is the execution-history retention policy, and is pruning automated?
  6. Are we a single-scheduler-node deployment, or do we need onOneServer/overlap locks to avoid duplicate runs?
  7. Do we run Filament alongside Totem, and do we want a shared theme preference?

Integration Approach

Stack fit. Good fit for a Laravel 10/11 monolith or modular monolith using Blade, where the operations audience already has app-level credentials. Poor fit if the dashboard is expected to be a standalone, independently deployable ops console, or if scheduling spans non-Laravel runtimes — in that case Totem becomes a partial view and should be paired with an external scheduler-monitoring service.

Migration path.

  1. Install in a feature branch; publish config, assets, and migrations; review the generated config for route prefix, middleware, and auth gate before merging.
  2. Run migrations in a non-production environment first; confirm the task/execution tables and assess expected row growth.
  3. Wire the scheduler cron entry on exactly one node, and confirm existing schedule() definitions are visible and correctly parsed by Totem.
  4. Gate the route behind an authorization check (policy or explicit middleware) and verify with an unauthenticated and a low-privilege request.
  5. Roll to staging, then production, with the asset publish step added to the deploy script in the same change.

Compatibility. v13.4.0 is additive and drop-in from v13.3.0 — no schema migration, no config breaking change, no deprecations announced. The three upgrade actions are all publish/merge steps rather than code changes. Projects that do not override Totem views need only the totem:assets run.

Sequencing.

  • Phase 1 (install + gate): package install, migrations, auth gate, cron wiring. This is the value-bearing work.
  • Phase 2 (deploy hygiene): add php artisan totem:assets to the release pipeline as an idempotent step so asset-only releases like this one cannot be silently skipped.
  • Phase 3 (UI policy): decide explicitly whether we override Totem views. Default position should be no overrides, so future UI releases remain zero-touch.
  • Phase 4 (optional polish): evaluate dark mode adoption and whether to share the theme key with Filament via TOTEM_THEME_STORAGE_KEY=theme. Treat as a separate, low-priority change with its own verification.

Operational Impact

Maintenance. The release cadence appears active (v13.x line, incremental UI improvements). The recurring maintenance cost is not code — it is deploy discipline: asset publishing on every release, and Blade override merging if we choose to customise. Pin to a minor version range and review changelogs on upgrade; the failure mode of an unreviewed minor bump is cosmetic, but the failure mode of an unreviewed major bump could be structural.

Support. Community-maintained with a small contributor base (this release is a single external PR). No commercial SLA, no guaranteed security response window. Mitigation: keep the blast radius small by treating Totem as an observability convenience rather than a critical-path dependency, and retain a fallback (Laravel's native scheduler output plus log aggregation) that works if the dashboard is unavailable.

Scaling. The dashboard is read-heavy against its own tables and will not be a throughput bottleneck at typical ops-audience concurrency. The real scaling concerns are (a) unbounded growth of execution history — needs a retention/pruning policy and a review of table size after a few weeks of real traffic; and (b) multi-node scheduling, where correctness depends on a single scheduler node or overlap-prevention locks, not on Totem itself. Manual execution from the UI is a privileged, potentially long-running action — it should be audit-logged and rate-limited by policy.

Failure modes.

  • Auth gate misconfigured → unauthenticated or over-privileged task execution. Highest severity; verify in every environment.
  • Asset publish skipped → missing dark.css, broken or partially styled theme. Cosmetic but visible; caught only if someone uses the dashboard.
  • Blade overrides not merged → layout or sidebar regressions after upgrade. Silent until viewed.
  • Theme key collision with Filament → user theme preference changes propagate unexpectedly between tools if the shared key is set without intent.
  • Dashboard unavailable → scheduled tasks still run (they are driven by cron, not the UI), so this is a visibility outage, not a scheduling outage. Confirm this assumption holds in our setup and document it.
  • Task definition drift between database and code → a task appears in the UI but does not run, or vice versa.

Ramp-up. Low for Laravel developers — roughly half a day to install, gate, and verify; the concepts map directly onto Laravel's scheduler. The non-obvious cost is the operational runbook: who can trigger tasks, how execution history is pruned, what to check when the dashboard looks broken, and the deploy-time asset step. Produce that runbook alongside the rollout rather than after the first incident. For the dark mode feature specifically, ramp-up is negligible — it requires no training, only a note that the switcher follows browser default by default.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator