Weave Code
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

Module Menu Laravel Package

dizatech/module-menu

Laravel package for managing and rendering module-based menus. Includes an admin UI to create menus, Blade components for sidebar/front-end output, migrations, and seeder-based menu definitions for deployable, migratable menu setups across modules.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Modular UI/UX Roadmap: Enables rapid development of dynamic, module-based navigation menus (e.g., admin dashboards, multi-tenant portals, or feature-flags-driven UIs). Aligns with a "composable architecture" strategy where menus are built from reusable components.
  • Build vs. Buy: Avoids reinventing menu generation logic (e.g., recursive tree-building, caching, or permission-based filtering) for Laravel apps. Lowers dev effort for high-value UI patterns.
  • Use Cases:
    • Admin Panels: Auto-generate hierarchical menus from registered modules (e.g., "Users," "Reports," "Settings").
    • Multi-Tenant SaaS: Dynamically render tenant-specific menus (e.g., hide "Billing" for free-tier users).
    • Feature Flags: Toggle menu items based on user roles/permissions (e.g., "Advanced Tools" for admins only).
    • Legacy Migration: Modernize static menu hardcoding in Blade templates with a data-driven approach.

When to Consider This Package

  • Adopt if:
    • Your Laravel app has 3+ modules with shared navigation needs (e.g., admin panels, complex dashboards).
    • You prioritize developer velocity over customization (e.g., need 80% functionality quickly).
    • Your team lacks frontend expertise to build dynamic menus with JavaScript (e.g., Vue/React).
    • You’re using Laravel’s built-in auth/authorization (e.g., Gates, Policies) and want to integrate seamlessly.
  • Look elsewhere if:
    • You need highly customizable UI (e.g., animated menus, drag-and-drop reordering) → Consider frontend frameworks (e.g., Alpine.js + Laravel).
    • Your menus are static and simple (e.g., 3–4 items) → Hardcode in Blade templates.
    • You require real-time updates (e.g., WebSocket-driven menu changes) → Use a frontend state management tool (e.g., Laravel Echo + Vuex).
    • The package’s last release (2021) conflicts with your long-term support needs → Evaluate alternatives like spatie/laravel-menu (actively maintained).

How to Pitch It (Stakeholders)

For Executives: "This package lets us ship module-based navigation menus in Laravel 3x faster by automating the boilerplate—no more manual Blade templates or spaghetti JavaScript. For example, if we’re building a SaaS admin panel with 10 modules, we’d save 2–3 dev weeks while ensuring consistency. The MIT license and modular design align with our tech stack, and the low maintenance burden (last updated in 2021 but stable) fits our risk appetite for non-core features. Let’s pilot it for the [Project X] admin dashboard to validate ROI."

For Engineering: *"Pros:

  • Zero frontend work: Generates HTML menus server-side from module metadata (e.g., config/menu.php).
  • Permission-aware: Integrates with Laravel’s auth system (e.g., hide menu items if auth()->user()->cannot('access-module')).
  • Cacheable: Built-in support for caching menu trees (reduces DB queries).
  • Lightweight: ~200 LOC, no dependencies beyond Laravel.

Cons:

  • Limited UI control: Outputs basic <ul>/<li> structures (style with CSS/JS as needed).
  • No active maintenance: Vetted for stability, but test thoroughly for edge cases (e.g., nested modules >5 levels deep).

Recommendation: Use for admin panels or internal tools where speed > customization. For public-facing sites, pair with a frontend framework. Example workflow:

  1. Define modules in config/menu.php:
    'admin' => [
        'label' => 'Dashboard',
        'icon' => 'fas fa-tachometer',
        'children' => [
            ['label' => 'Users', 'route' => 'users.index'],
            // ...
        ],
    ],
    
  2. Render in Blade:
    {!! Menu::render('admin') !!}
    
  3. Extend with middleware for dynamic filtering (e.g., hide items for non-admins)."*
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.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle