🔥 基于 Laravel 的后台系统构建工具 (Laravel Admin),使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码

Overview

Build Status StyleCI

Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统。内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码,对后端开发者非常友好。

功能特性

  • 简洁优雅、灵活可扩展的API
  • 用户管理
  • RBAC权限管理,支持无限极权限节点
  • 菜单管理
  • 使用pjax构建无刷新页面,支持按需加载静态资源,可以无限扩展组件而不影响整体性能
  • 松耦合的页面构建与数据操作设计,可轻松切换数据源
  • 自定义页面
  • 自定义主题配色
  • 多主题切换功能,内置多种主题色
  • 可轻松构建无菜单栏的独立页面(如可用于构建弹窗选择器等功能)
  • 插件功能
  • 可视化代码生成器,可根据数据表一键生成增删改查页面
  • 数据表格构建工具,内置丰富的表格常用功能(如组合表头、数据导出、搜索、快捷创建、批量操作等)
  • 树状表格功能构建工具,支持分页和点击加载
  • 数据表单构建工具,内置丰富的表单类型,支持表单异步提交
  • 分步表单构建工具
  • 弹窗表单构建工具
  • 数据详情页构建工具
  • 无限层级树状页面构建工具,支持用拖拽的方式实现数据的层级、排序等操作
  • 内置丰富的常用页面组件(如图表、数据统计卡片、下拉菜单、Tab卡片、提示工具等)
  • Section功能(类似WordpressFilterblade模板的section标签)
  • 异步文件上传表单,支持分块多线程上传
  • 多应用
  • 插件市场,只需在管理页面轻轻点击鼠标即可完成插件的安装、更新和卸载等操作

环境

  • PHP >= 7.1.0
  • Laravel 5.5.0 ~ 8.*
  • Fileinfo PHP Extension

安装

如果安装过程中出现composer下载过慢或安装失败的情况,请运行命令composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer镜像更换为阿里云镜像。

首先需要安装laravel框架,如已安装可以跳过此步骤。如果您是第一次使用laravel,请务必先阅读文档 安装 《Laravel中文文档》

composer create-project --prefer-dist laravel/laravel 项目名称 7.*
#
composer create-project --prefer-dist laravel/laravel 项目名称

安装完laravel之后需要修改.env文件,设置数据库连接设置正确

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dcat-admin
DB_USERNAME=root
DB_PASSWORD=

安装dcat-admin

cd {项目名称}

composer require dcat/laravel-admin

然后运行下面的命令来发布资源:

php artisan admin:publish

在该命令会生成配置文件config/admin.php,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。

然后运行下面的命令完成安装:

执行这一步命令可能会报以下错误Specified key was too long ... 767 bytes,如果出现这个报错,请在app/Providers/AppServiceProvider.php文件的boot方法中加上代码\Schema::defaultStringLength(191);,然后删除掉数据库中的所有数据表,再重新运行一遍php artisan admin:install命令即可。

php artisan admin:install

上述步骤操作完成之后就可以配置web服务了,注意需要把web目录指向public目录!如果用的是nginx,还需要在配置中加上伪静态配置

location / {
	try_files $uri $uri/ /index.php?$query_string;
}

启动服务后,在浏览器打开 http://localhost/admin,使用用户名 admin 和密码 admin登陆。

扩展

扩展 描述 dcat-admin 版本
mosiboom/dcat-iframe-tab IFRAME TAB标签切换 2.x
super-eggs/dcat-distpicker 省市区联动 2.x
ueditor 百度在线编辑器 1.x
grid-sortable 表格拖曳排序工具 1.x

鸣谢

Dcat Admin 基于以下组件:

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License


dcat-admin is licensed under The MIT License (MIT).

Comments
  • ltrim(): Passing null to parameter   and  htmlentities(): Passing null to paramete

    ltrim(): Passing null to parameter and htmlentities(): Passing null to paramete

    • Laravel Version: Laravel Framework 9.12.2
    • PHP Version: PHP 8.1.5
    • Dcat Admin Version: 2.2.--beta

    Description:

    目前发现两处错误日志 1:

    laravel.WARNING: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/test/vendor/dcat/laravel-admin/src/Support/helpers.php on line 431
    

    2:

    [2022-05-20 22:25:26] laravel.WARNING: htmlentities(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/test/vendor/dcat/laravel-admin/src/Support/Helper.php on line 842
    

    Steps To Reproduce:

    opened by hedeqiang 14
  • 关于权限方面的问题

    关于权限方面的问题

    有一个问题,如果用户(User)有多种职业(Job,如:教师,高管......),不同的职业有不同的身份(Role,如:老师,项目经理),但是同一时间用户只能属于一种身份,需要根据这个身份判断用户的权限。现在能想到的就是 Job 和 Role 需要有一层关系,这样才能获取到对应 Job 的 Role。如果框架里去实现得话,请问还有没有更好得方式。如果只能这样去修改得话,我应该改动框架里获取权限的方法嘛 ,还是另有他处可以覆盖默认的权限获取方式,我在文档上没有找到途径,请帮助一下,谢谢。

    question 
    opened by Warrens-yg 14
  • there are no commands defined in the

    there are no commands defined in the "admin"

    • Laravel Version: 7.6.0
    • PHP Version: 7.3.17
    • Dcat Admin Version: 1.0

    Description:

    执行php artisan admin:publish 提示there are no commands defined in the "admin" namespace.### Steps To Reproduce:

    question 
    opened by gogojames 14
  • Form中存在多个Radio时when功能失效

    Form中存在多个Radio时when功能失效

    • Laravel Version: 9.17
    • PHP Version: 8.0
    • Dcat Admin Version: 2.0.x-dev

    Description:

    #1776 问题是由这个PR引起的

    https://user-images.githubusercontent.com/26641510/172759152-605a1f9d-98bb-484d-9223-f40fd8c27a3e.mov

    bug 
    opened by fangmuke 13
  • dcat 中使用Dcat.info,总是出现多条?

    dcat 中使用Dcat.info,总是出现多条?

    • Laravel Version: 8.5.2
    • PHP Version: 7.4.1
    • Dcat Admin Version: 1.7.8

    Description:

    结合使用 Pusher Dcat.info('您有新的数据上报('+data+')'); image 这个总是出现多条,多出的是之前的消息,这个能每次弹出之前把以前旧的先清除掉吗?或者有没有解决方案

    Steps To Reproduce:

    question wontfix 
    opened by shunhua 13
  • Form::make()和 new Form() 出现的内容样式不一样,new 的调用树组件不自动加载JStree

    Form::make()和 new Form() 出现的内容样式不一样,new 的调用树组件不自动加载JStree

    • Laravel Version: 7.0
    • PHP Version: 7.3.16
    • Dcat Admin Version: 1.4.5

    make 出来的树没问题

    Form::make(new Role('permissions'), function (Form $form) {
                $form->tree('permissions')
                    ->nodes(function () {
                        $permissionModel = config('admin.database.permissions_model');
                        $permissionModel = new $permissionModel();
    
                        return $permissionModel->allNodes();
                    })
                    ->customFormat(function ($v) {
                        if (! $v) {
                            return [];
                        }
    
                        return array_column($v, 'id');
                    });
            });
    

    new 出来报错 $tree.on(...).on(...).jstree is not a function,而且弹框多了滚动条

            $form = new Form(new Role('permissions'));
            $form->tree('permissions')
                ->nodes(function () {
                    $permissionModel = config('admin.database.permissions_model');
                    $permissionModel = new $permissionModel();
    
                    return $permissionModel->allNodes();
                })
                ->customFormat(function ($v) {
                    if (! $v) {
                        return [];
                    }
    
                    return array_column($v, 'id');
                });
            return $form->render();
    
    opened by shenfanzi 13
  • 我想在表格的某列中,多加一个弹框表单操作,应该如何做?

    我想在表格的某列中,多加一个弹框表单操作,应该如何做?

    • Laravel Version: #.#.#
    • PHP Version: #.#.#
    • Dcat Admin Version: #.#.#

    Description:

    原有的只能在操作栏添加弹框操作,我的需求是一个用户列表里面展示了一列图片列表,在没有图片的时候,可以添加图片,需要弹框显示表单添加图片提交。看demo都是一列只能放一个按钮,我是想自定义html内容,添加图片操作按钮。但是不知道这个弹框要怎么渲染上去? 1620641111968

    Steps To Reproduce:

    question wontfix 
    opened by dmskys 12
  • 表格展示全部字段出错

    表格展示全部字段出错

    • Laravel Version: 5.8
    • PHP Version: 7.4
    • Dcat Admin Version: 2.0.22-beta

    Description:

    1.表格数据展示字段出错(当前问题是从v2.0.20直接升级到v2.0.22后出现的)

    image

    2.模态窗和复制功能同时使用时,点击复制会同时打开模态窗(这个问题是一直存在) image

    opened by LazyBaby 12
  • 权限中间件多次调用问题?

    权限中间件多次调用问题?

    • Laravel Version: #.#.#
    • PHP Version: #.#.#
    • Dcat Admin Version: #.#.#

    Description:

    中间件做权限过滤的时候,$next ($request) 被调用了两次,导致每个页面调用了两次请求

    Steps To Reproduce:

    question wontfix 
    opened by mmlsx 12
  • 数据导出,怎么使用laravel-excel registerEvents注册事件

    数据导出,怎么使用laravel-excel registerEvents注册事件

    • Laravel Version: 6.2
    • PHP Version: 7.3
    • Dcat Admin Version: 1.4

    Description:

    🧡首先感谢开发者的精勤更新维护。🧡 🤲赞助了50块,略表心意🤲

    我在从laravel-admin迁移到dcat-admin中,发现两者的数据导出有些不兼容。 在laravel-admin中,可以通过实现WithMapping接口然后重写map()方法来修改数据。 参见文档 https://laravel-admin.org/docs/zh/model-grid-export#%E6%95%B0%E6%8D%AE%E4%BF%AE%E6%94%B9 dcat-admin中关于这部分的文档非常简略,我不太懂怎么处理。

    并且在laravel-admin中,可以实现WithEvents接口然后重写registerEvents事件,在这里处理单元格格式。 以下是laravel-admin处理数据导出的相关代码:

    <?php
    namespace App\Exports;
    
    use Encore\Admin\Grid\Exporters\ExcelExporter;
    use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
    use Maatwebsite\Excel\Concerns\WithEvents;
    use Maatwebsite\Excel\Concerns\WithHeadings;
    use Maatwebsite\Excel\Concerns\WithMapping;
    use Maatwebsite\Excel\DefaultValueBinder;
    use Maatwebsite\Excel\Events\AfterSheet;
    use PhpOffice\PhpSpreadsheet\Cell\DataType;
    use PhpOffice\PhpSpreadsheet\Style\Alignment;
    use PhpOffice\PhpSpreadsheet\Style\Fill;
    
    class GrabNumberExport extends ExcelExporter implements  WithMapping, WithEvents, WithHeadings, WithCustomValueBinder
    {
        protected $fileName = '实操抢号记录.xlsx';
    
        public function __construct()
        {
            parent::__construct();
            $this->fileName = '实操抢号记录'.date('Y-m-d').'.xlsx';
        }
    
        /**
         * 自定义头部
         *
         * @return array
         */
        public function headings() : array
        {
            return [
                '序号',
                '考试月份',
                '抢号日期',
                '考试日期',
                '等级',
                '客户名称',
                '学员名称',
                '身份证号码',
                '电话',
                '考试分数',
                '是否通过',
                '是否缺考',
            ];
        }
    
        /**
         * 将数值转换为字符串
         *
         * @param \PhpOffice\PhpSpreadsheet\Cell\Cell $cell
         * @param mixed $value
         * @return boolean
         */
        public function bindValue(\PhpOffice\PhpSpreadsheet\Cell\Cell $cell, $value)
        {
            // 重写数据类型的判断规则
            if (is_numeric($value) && strlen($value) > 5 && preg_match('/^[\+\-]?(\d+\\.?\d*|\d*\\.?\d+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $value)) {
                $cell->setValueExplicit($value, DataType::TYPE_STRING);
                return true;
            }
            // 继承DefaultValueBinder
            $default = new DefaultValueBinder();
            return $default->bindValue($cell, $value);
        }
    
        /**
         * 对字段的数据进行预处理
         *
         * @param array $item 实操抢号信息
         * @return array
         */
        public function map($grab) : array
        {
            # 提取每个抢号记录的关联学员数据
            $grabNumber= $grab->with(['grabstudents', 'grabstudents.student', 'grabstudents.student.examtest'])
                ->where('id', $grab->id)
                ->get()->first();
            $students = $grabNumber->grabstudents->map(function ($item) use ($grabNumber) {
                    .... 处理关联数据
            });
    
            # 统计数据
            $pass_num = $students->filter(function ($item) {
                return data_get($item, 'score') > 60 ? true : false;
            })->count(); // 通过人数
            $absend_num = $students->filter(function ($item) {
                return data_get($item, 'score') === 0 ? true : false;
            })->count(); // 缺考人数
            $all_num = $students->count(); // 总人数
            $attend_num = $all_num - $absend_num; // 参加考试人数
            $throughput_rate = number_format($pass_num / $all_num* 100, 0, '.', '').'%';
            $throughput_rate_high = $attend_num == 0 ? 0 : number_format($pass_num / $attend_num * 100, 0, '.', '').'%';
    
            $row1 = [
                'pass_num' => "通过人数:". $pass_num,
                'absend_num' => "缺考人数:". $absend_num,
            ];
            $row2 = [
                'throughput_rate' => "含缺考通过率:". $throughput_rate,
                'last_fill' => '',
            ];
            $row3 = [
                'throughput_rate_high' =>  "不含缺考通过率:".$throughput_rate_high,
                'last_fill' => '',
            ];
            // 一行有12个字段,不够需要进行补齐
            $statistic_data[] = array_values(array_merge(array_fill(0, 10, ''), $row1));
            $statistic_data[] = array_values(array_merge(array_fill(0, 10, ''), $row2));
            $statistic_data[] = array_values(array_merge(array_fill(0, 10, ''), $row3));
            // 抹平$students 中元素的键,然后再合并统计数据
            return $students->map(function ($item) {
                return $item->values();
            })->merge($statistic_data)->toArray();
        }
    
        public function identity_card($id){
            return (string)$id.' ';
        }
    
        public function registerEvents(): array
        {
            return [
                AfterSheet::class    => function(AfterSheet $event) {
                    // 所有表头-设置字体为12
                    $cellRange = 'A1:Z1';
                    $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(12);
    
                    // 文字居中
                    $lastrow = $event->sheet->getDelegate()->getHighestRow();
                    $event->sheet->getDelegate()->getStyle('A1:L'.$lastrow)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
    
                    // 设置统计数据的样式
                    $lastcolumn = 12;
                    for ($col = 11; $col <= $lastcolumn; $col++) {
                        for ($row = 1; $row <= $lastrow; $row++) {
                            $cell = $event->sheet->getDelegate()->getCellByColumnAndRow($col, $row);
                            $value = $cell->getValue();
                            $is_statistics = false;
    
                            if (strpos($value, "通过人数") !== false || strpos($value, "缺考人数") !== false) {
                                $is_statistics = true;
                                $cell->getStyle()->getFill()->setFillType(Fill::FILL_SOLID)
                                    ->getStartColor()->setARGB('ffff00');
                            }
                            if (strpos($value, "含缺考通过率") !== false || strpos($value, "不含缺考通过率") !== false) {
                                $is_statistics = true;
                                $cell->getStyle()->getFill()->setFillType(Fill::FILL_SOLID)
                                    ->getStartColor()->setARGB('92d050');
                            }
                            if ($is_statistics) {
                                $cell->getStyle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
                            }
                        }
                    }
    
                    // 将设置表格宽度,ShouldAutoSize
                    $event->sheet->getDelegate()->getColumnDimension('A')->setWidth(10);
                    $event->sheet->getDelegate()->getColumnDimension('B')->setWidth(10);
                    ........
                    $event->sheet->getDelegate()->getColumnDimension('K')->setWidth(25);
                    $event->sheet->getDelegate()->getColumnDimension('L')->setWidth(20);
                   // 设置 A1:D4 范围内文本自动换行
                    $event->sheet->getDelegate()->getStyle('I1:M1000')
                        ->getAlignment()->setWrapText(true);
                },
            ];
        }
    }
    

    导出的excel文件显示如下: 导出效果

    我感觉laravel-admin对laravel-excel适配的非常好,实现其相关的 Export concerns都能做到,但是在dcat-admin我不太明白怎么处理。

    能给我一些建议吗?非常感谢🙏

    opened by metanoia1989 12
  • HasMany 验证规则,把删除的也加上了

    HasMany 验证规则,把删除的也加上了

    • Laravel Version: 8.83.3
    • PHP Version: 74
    • Dcat Admin Version: 2.2.0-beta

    Description:

    image

    HasMany 验证规则,把删除的也加了验证 @ihipop

    Steps To Reproduce:

    新建未提交->删除->提交

    bug 
    opened by xianlinzhang 11
  • Expand 手风琴效果,双击的时候会出现问题

    Expand 手风琴效果,双击的时候会出现问题

    • Laravel Version: 8.0
    • PHP Version: 7.4.7
    • Dcat Admin Version: 1.7

    Description:

    form Expand Expand 手风琴弹出来,如果是双击而不是单机 那么 弹出和 弹回 就会失效,弹出来就会立刻消失的bug

    Steps To Reproduce:

    opened by fenrir-baoshi 1
  • Assets Versioning

    Assets Versioning

    You can have a version parameter in the app/config/admin.php that changes the default version hardcoded in the vendor folder ( const VERSION = '2.2.2-beta'; ) this is used as a parameter to load cached version of the assets.

    a better option is to be able to use the mix.version(); (https://laravel-mix.com/docs/6.0/versioning)

    opened by radumro 0
  • 表单如何动态新增一个editor

    表单如何动态新增一个editor

    • Laravel Version: #.#.#
    • PHP Version: #.#.#
    • Dcat Admin Version: #.#.# laravel9 php 8.0 Dcat Admin 2.*

    Description:

    表单如何动态新增一个editor

    Steps To Reproduce:

    opened by ChinaBygones 0
  • 我想在批量编辑数据的表单默认值方法里面获取首个选中的id,如何获取?

    我想在批量编辑数据的表单默认值方法里面获取首个选中的id,如何获取?

    我这边有个需求是批量修改设置内容,但是需要在原来的内容基础上修改, 所以我只需要获取第一个id,给表单进行默认值设置就行, 但是我在 form中的default() 方法里面,不知道如何获取选中的首个id, 现在选中的id是在action中通过js设置到form表单的隐藏input id字段的,但是我不知道怎么拿到这个设置的值。

    opened by dmskys 0
Releases(2.2.2-beta)
Owner
Jiang Qinghua
唯有前进的勇气长存
Jiang Qinghua
LaraAdmin is a Open source Laravel Admin Panel / CMS which can be used as Admin Backend, Data Management Tool or CRM boilerplate for Laravel with features like Advanced CRUD Generation, Module Manager, Backups and many more.

LaraAdmin 1.0 LaraAdmin is a Open source CRM for quick-start Admin based applications with features like Advanced CRUD Generation, Schema Manager and

Dwij IT Solutions 1.5k Dec 29, 2022
Admin One is simple, beautiful and free Laravel admin dashboard (built with Vue.js, Bulma & Buefy).

Admin One — Free Laravel Vue Bulma Dashboard Admin One is simple, beautiful and free Laravel admin dashboard (built with Vue.js, Bulma & Buefy). Built

Viktor Kuzhelny 136 Dec 27, 2022
Until 2018, Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE. Backpack v4 no longer uses this package, they're now built-in - use Backpack/CRUD instead.

Note: This package is only used by Backpack v3. Starting with Backpack v4, everything this package does is included in Backpack/CRUD - one package to

Backpack for Laravel 845 Nov 29, 2022
Littlelink admin is an admin panel for littlelink that provides you a website similar linktree.

⚙️ LittleLink Admin LittleLink Admin is an admin panel for littlelink that provides you a website similar linktree. ?? Features creating a link page w

Khashayar Zavosh 70 Oct 29, 2022
Littlelink admin is an admin panel for littlelink that provides you a website similar linktree.

LittleLink Admin is an admin panel for littlelink that provides you a website similar linktree.

Khashayar Zavosh 70 Oct 29, 2022
Admin Columns allows you to manage and organize columns in the posts, users, comments, and media lists tables in the WordPress admin panel.

Admin Columns allows you to manage and organize columns in the posts, users, comments, and media lists tables in the WordPress admin panel. Transform the WordPress admin screens into beautiful, clear overviews.

Codepress 67 Dec 14, 2022
Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE

Until 2018, Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE. Backpack v4 no longer uses this package, they're now built-in - use Backpack/CRUD instead.

Backpack for Laravel 845 Nov 29, 2022
A Laravel Admin Panel (Laravel Version : 6.0)

Laravel Admin Panel (Current: Laravel 7.*) Introduction Laravel Admin Panel provides you with a massive head start on any size web application. It com

ftxinfotech 903 Dec 31, 2022
Laravel Vue SPA, Bulma themed. For demo login use `[email protected]` & `password` -

Laravel Enso Hit the ground running when building your new Laravel SPA project with boilerplate and extra functionality out of the box! click on the p

Laravel Enso 1k Jan 3, 2023
Laravel Vue SPA, Bulma themed. For demo login use `[email protected]` & `password` -

Laravel Enso Hit the ground running when building your new Laravel SPA project with boilerplate and extra functionality out of the box! click on the p

Laravel Enso 1k Jan 3, 2023
Voyager - The Missing Laravel Admin

Voyager - The Missing Laravel Admin Made with ❤️ by The Control Group Website & Documentation: https://voyager.devdojo.com/ Video Tutorial Here: https

The Control Group 11.3k Jan 2, 2023
A @laravel based RAD platform for back-office applications, admin/user panels, and dashboards.

For the full documentation, visit orchid.software. Introduction Orchid is a free Laravel package that abstracts standard business logic and allows cod

Laravel Orchid 3.4k Jan 1, 2023
PHP Laravel, MySQL and AIML chatbot engine and admin portal

Lemur Engine The Lemur Engine is a PHP/MySQL/AIML Chatbot. Written using the Laravel Framework. Demo You can demo the bot at the website: https://lemu

The Ramen Robot Disco Code 18 Nov 8, 2022
A Laravel admin panel which is creating CRUD for your application automatically.

Adds a zero configuration Admin Panel to your Laravel Application Installation You can install the package via composer: composer require max-hutschen

42coders 10 Aug 24, 2022
Laravel Admin Panel

Laravel Admin Panel An admin panel for managing users, roles, permissions & crud. Requirements Laravel >=5.5 PHP >= 7.0 Features User, Role & Permiss

AppzCoder 668 Dec 18, 2022
Base Laravel framework with a simple admin site/dashboard

Base Laravel Admin Just a basic Laravel 4.1 install with a admin site/dashboard using Bootstrap 3.0.3 For those (like me) who set up lots of small sys

Alex Dover 1 Nov 6, 2015
EasyPanel is a beautiful, customizable and flexible admin panel based on Livewire for Laravel.

EasyPanel EasyPanel is a beautiful, customizable and flexible admin panel based on Livewire for Laravel. Features : Easy to install Multi Language RTL

Reza Amini 529 Dec 29, 2022
Laravel 8 with [email protected] template

laravel [email protected] Laravel 8 with [email protected] template The following tools are required in order to start the installation. PHP >=8.0 compos

null 6 Nov 10, 2022
Production Ready, Carefully Crafted, Extensive Vuejs Laravel Free Admin Template 🤩

Materio - Vuetify VueJS Laravel Free Admin Template Production ready carefully crafted most comprehensive admin template Introduction If you’re a deve

ThemeSelection 115 Dec 13, 2022