PHPackages                             jbsnewmedia/vis-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. jbsnewmedia/vis-bundle

ActiveSymfony-bundle[Admin Panels](/categories/admin)

jbsnewmedia/vis-bundle
======================

VisBundle is a comprehensive Symfony bundle designed as a complete admin interface, integrating user and role management with dynamic sidebar and topbar components for building robust administration panels.

1.1.5(2mo ago)157MITPHPPHP &gt;=8.2CI passing

Since Jun 1Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/jbsnewmedia/vis-bundle)[ Packagist](https://packagist.org/packages/jbsnewmedia/vis-bundle)[ RSS](/packages/jbsnewmedia-vis-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (10)Versions (13)Used By (0)

VisBundle
=========

[](#visbundle)

[![Packagist Version](https://camo.githubusercontent.com/794ff5ecf9d04b4e100a6d9ded035176b70f4b3f112c87ad44794514a696000d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a62736e65776d656469612f7669732d62756e646c65)](https://packagist.org/packages/jbsnewmedia/vis-bundle)[![Packagist Downloads](https://camo.githubusercontent.com/2a0aeb6ced340a413fdd93d1be941fb08f2091d025d9f7f9364c01ce6299b336/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a62736e65776d656469612f7669732d62756e646c65)](https://packagist.org/packages/jbsnewmedia/vis-bundle)[![PHP Version Require](https://camo.githubusercontent.com/f8194507a94831bfc0d1b073058c6a8d2cd65048b6d7f02d8f03f197ff63a4dd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6a62736e65776d656469612f7669732d62756e646c65)](https://packagist.org/packages/jbsnewmedia/vis-bundle)[![Symfony Version](https://camo.githubusercontent.com/ce7f7484cab9ad5373e96792620d4513e1ea50164d4c1c283a1b3a2bed55261c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253545372e342d3637336162373f6c6f676f3d73796d666f6e79)](https://symfony.com)[![License](https://camo.githubusercontent.com/459b652e9e2c75657c5b6091802664d4592e24a0cf4661354ffac313feff2ca2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6a62736e65776d656469612f7669732d62756e646c65)](https://packagist.org/packages/jbsnewmedia/vis-bundle)[![Tests](https://github.com/jbsnewmedia/vis-bundle/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/jbsnewmedia/vis-bundle/actions/workflows/tests.yml)[![PHP CS Fixer](https://camo.githubusercontent.com/056e5fa4bcf9273c04257a42b6365d1d1f431d5ea1eae0c759754f8549af2b49/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2d63732d2d66697865722d636865636b65642d627269676874677265656e)](https://github.com/jbsnewmedia/vis-bundle/actions/workflows/tests.yml)[![PHPStan](https://camo.githubusercontent.com/6e8e5bc365d34c98ba2b8b6caf2bdfaa5bccb21bc13931acc6e8717581207355/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068707374616e2d616e616c797365642d627269676874677265656e)](https://github.com/jbsnewmedia/vis-bundle/actions/workflows/tests.yml)[![Rector](https://camo.githubusercontent.com/e74d169a31106980ccbf6ce8ae0436dc5a603c72c76c746a156282c07dd504b3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f726563746f722d636865636b65642d627269676874677265656e)](https://github.com/jbsnewmedia/vis-bundle/actions/workflows/tests.yml)[![codecov](https://camo.githubusercontent.com/7e53874224f32ddfaedd1a04ccdae58cb6aff8c0d7b85594e19e0ef41ee115d8/68747470733a2f2f636f6465636f762e696f2f67682f6a62736e65776d656469612f7669732d62756e646c652f6272616e63682f6d61696e2f67726170682f62616467652e737667)](https://codecov.io/gh/jbsnewmedia/vis-bundle)

**VisBundle** is a comprehensive Symfony bundle designed as a complete admin interface. It integrates user and role management with dynamic sidebar and topbar components for creating robust administration panels.

🚀 Features
----------

[](#-features)

- **User &amp; Role Management** (UUID-based) with CLI commands
- **Dynamic Sidebar/Topbar** components
- **Plugin Architecture** with Composer packages or JSON-based loading as a project
- **Localization Support** with session-based switching
- **Security Integration** with Symfony Authenticator
- **Darkmode Support** with session-based switching
- **Twig Extensions** for enhanced template functionality
- **Multi-Tool Support** with tool-switching interface
- **Sidebar State** (open/closed) persistable
- **Responsive Design** via AvalynX SimpleAdmin

---

⚙️ Requirements
---------------

[](#️-requirements)

- PHP 8.2 or higher
- Symfony Framework 7.4 or higher

---

📦 Installation
--------------

[](#-installation)

Use [Composer](https://getcomposer.org/) to install the bundle:

```
composer require jbsnewmedia/vis-bundle
```

---

🛠 Setup &amp; Configuration
---------------------------

[](#-setup--configuration)

### 1. Project Initialization (Optional)

[](#1-project-initialization-optional)

If you are starting a new project, you can use the project creation command to set up the basic structure, including kernel modifications and skeleton files:

```
php bin/console vis:project:create
```

### 2. Core Installation Setup

[](#2-core-installation-setup)

Run the setup command to create the essential controllers and configurations:

```
php bin/console vis:core:create
```

This command will:

- Create the MainController for tool management
- Create the SecurityController for authentication
- Optionally create the RegistrationController
- Create the LocaleController for session-based language switching
- Create the DarkmodeController for session-based design switching (light/dark)
- Update the configuration files `security.yaml` and `vis.yaml`

### 3. Create First Admin User

[](#3-create-first-admin-user)

```
# Create new user (UUID-based)
php bin/console vis:user:create

# Add roles to user
php bin/console vis:user:add-role

# Remove roles from user
php bin/console vis:user:remove-role
```

### 4. Plugin Management

[](#4-plugin-management)

You can create new plugins with the following command:

```
php bin/console vis:plugin:create
```

---

📋 Usage Examples
----------------

[](#-usage-examples)

### Create a Tool

[](#create-a-tool)

```
use JBSNewMedia\VisBundle\Model\Tool;
use JBSNewMedia\VisBundle\Service\Vis;

class YourController extends VisAbstractController
{
    public function __construct(private Vis $vis)
    {
        $tool = new Tool('dashboard');
        $tool->setTitle('Dashboard');
        $tool->addRole('ROLE_ADMIN');

        $this->vis->addTool($tool);
        $this->vis->setTool('dashboard');
    }
}
```

### Add Sidebar Navigation

[](#add-sidebar-navigation)

```
use JBSNewMedia\VisBundle\Model\Sidebar\SidebarItem;
use JBSNewMedia\VisBundle\Model\Sidebar\SidebarHeader;

// Add header section
$header = new SidebarHeader('dashboard', 'main_section', 'Main Navigation');
$this->vis->addSidebar($header);

// Add navigation item
$item = new SidebarItem('dashboard', 'users', 'Users', 'admin_users_list');
$item->setIcon('');
$item->setOrder(10);
$item->addRole('ROLE_ADMIN');
$this->vis->addSidebar($item);
```

### Add Topbar Elements

[](#add-topbar-elements)

```
use JBSNewMedia\VisBundle\Model\Topbar\TopbarButton;
use JBSNewMedia\VisBundle\Model\Topbar\TopbarDropdown;

// Custom button
$button = new TopbarButton('dashboard', 'custom_action');
$button->setClass('btn btn-primary');
$button->setContent(' Add New');
$button->setOnClick('showModal()');
$this->vis->addTopbar($button);

// Dropdown menu
$dropdown = new TopbarDropdown('dashboard', 'reports_menu');
$dropdown->setLabel('Reports');
$dropdown->setData([
    'monthly' => [
        'route' => 'reports_monthly',
        'routeParameters' => [],
        'icon' => '',
        'label' => 'Monthly Report'
    ]
]);
$this->vis->addTopbar($dropdown);
```

### Plugin Development

[](#plugin-development)

```
use JBSNewMedia\VisBundle\Plugin\AbstractPlugin;

#[AsTaggedItem('vis.plugin')]
class CustomPlugin extends AbstractPlugin
{
    public function init(): void
    {
        // Plugin initialization logic
    }

    public function setNavigation(): void
    {
        $item = new SidebarItem('tools', 'custom_feature', 'Custom Feature');
        $item->setRoute('custom_feature_index');
        $this->vis->addSidebar($item);
    }

    public function setTopBar(): void
    {
        // Add custom topbar elements
    }
}
```

---

🎨 Template Integration
----------------------

[](#-template-integration)

### Basic Template Usage

[](#basic-template-usage)

```
{% extends '@Vis/tool/base.html.twig' %}

{% block vis_container %}

        Your Admin Content

{% endblock %}
```

### Custom Sidebar Templates

[](#custom-sidebar-templates)

```
{# templates/custom_sidebar_item.html.twig #}

            {{ item.icon|raw }}
            {{ item.label }}

```

---

📁 Architecture Overview
-----------------------

[](#-architecture-overview)

### Core Components

[](#core-components)

```
src/
├── Command/          # CLI commands for project/user/plugin management
├── Controller/       # Abstract controllers & core controllers
├── Entity/           # User, Tenant, Tool (UUID-based)
├── Model/            # Sidebar, Topbar, Tool models
├── Plugin/           # Plugin interface, lifecycle & loader
├── Security/         # Symfony authentication & locale handling
├── Service/          # Core Vis service & plugin manager
├── Twig/             # Extensions for dynamic filtering & translation
└── Trait/            # Reusable traits (roles, timestamps, etc.)

```

### Model Hierarchy

[](#model-hierarchy)

- **Tool**: Base container for admin areas
- **Sidebar**: Navigation components (header, item, with nesting)
- **Topbar**: Header components (button, dropdown, LiveSearch)
- **Plugin**: Modular extensions via service locator

---

🔧 Advanced Configuration
------------------------

[](#-advanced-configuration)

### Security Configuration (automatically generated)

[](#security-configuration-automatically-generated)

```
# config/packages/security.yaml
security:
    providers:
        vis_user_provider:
            entity:
                class: JBSNewMedia\VisBundle\Entity\User
                property: email

    firewalls:
        vis:
            lazy: true
            provider: vis_user_provider
            custom_authenticator: JBSNewMedia\VisBundle\Security\VisAuthenticator
            logout:
                path: vis_logout
                target: vis
            remember_me:
                secret: '%kernel.secret%'
                lifetime: 604800

    access_control:
        - { path: ^/vis/login, roles: PUBLIC_ACCESS }
        - { path: ^/vis/logout, roles: PUBLIC_ACCESS }
        - { path: ^/vis, roles: ROLE_USER }
```

### Asset Management Integration

[](#asset-management-integration)

```
{# With AssetComposerBundle integration #}
{% do addAssetComposer('avalynx/avalynx-simpleadmin/src/css/avalynx-simpleadmin.css') %}
{% do addAssetComposer('avalynx/avalynx-simpleadmin/src/js/avalynx-simpleadmin.js') %}
```

---

🧪 Developer Tools
-----------------

[](#-developer-tools)

The following commands are available for development:

```
# Install tools
composer bin-ecs-install
composer bin-phpstan-install
composer bin-phpunit-install
composer bin-rector-install

# Code quality checks
composer bin-ecs           # PHP-CS-Fixer check
composer bin-phpstan       # Static analysis
composer bin-rector        # Code transformation (dry-run)
composer test              # PHPUnit tests (without coverage)

# Automatic fixes
composer bin-ecs-fix       # Fix coding standards
composer bin-rector-process # Apply code transformations

# CI pipelines
composer ci                # Run all checks
composer ci-fix            # Run all checks and apply fixes
```

---

📜 License
---------

[](#-license)

This bundle is licensed under the MIT License. For more details, see the [LICENSE](LICENSE) file.

Developed by Jürgen Schwind and other contributors.

---

🤝 Contributing
--------------

[](#-contributing)

Contributions are welcome! If you would like to contribute, please contact us or create a fork of the repository and submit a pull request with your changes or improvements.

---

📫 Contact
---------

[](#-contact)

If you have questions, feature requests, or issues, please open an issue in our [GitHub repository](https://github.com/jbsnewmedia/vis-bundle) or submit a pull request.

---

*Enterprise-ready admin interface. Modular. Extensible. Security-first.*

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance87

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~29 days

Recently: every ~3 days

Total

10

Last Release

78d ago

PHP version history (2 changes)1.0.0PHP &gt;=8.1

1.1.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/44b85e5ce069ccae08123600bb24204ea8fe99c8cb5cbfae108ff29c179e503d?d=identicon)[jschwind](/maintainers/jschwind)

---

Top Contributors

[![jschwind](https://avatars.githubusercontent.com/u/985564?v=4)](https://github.com/jschwind "jschwind (106 commits)")

---

Tags

adminadmin-dashboardphp8symfonysymfony-bundlesymfony7

### Embed Badge

![Health badge](/badges/jbsnewmedia-vis-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/jbsnewmedia-vis-bundle/health.svg)](https://phpackages.com/packages/jbsnewmedia-vis-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M648](/packages/sylius-sylius)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k16.7M309](/packages/easycorp-easyadmin-bundle)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
