Generate your next Laravel Admin panel in minutes.

Starting new Laravel project? Deliver first version faster!
We will generate DB models, fresh CRUD adminpanel and API for you.

Dashboard picture
Illustration

How it works

Getting started is plain simple.

1

Start a new project

Register and create menus, fields and relationships online, install modules. No coding required. Test your panel on our server.

Select modules

Multi-tenancy

Restrict access to CRUD entries to only users (or teams) who actually created them.

Reports generator

Create simple visual chart-reports from the data in your CRUDs. Group by date, fields or relationships.

API generator

Create API Controllers and Routes for any of your CRUDs, just by ticking a checkbox. Includes OAuth with Laravel Passport.

System Calendar

Create a calendar, combining event sources from one or more CRUDs.

2

Review and download

View generated Laravel files at any time. Download the whole project. Unarchive and install it on your server with a few commands.

  • class CreateProjectsTable extends Migration
    {
        public function up()
        {
            Schema::create('projects', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->string('name')->nullable();
                $table->date('start_date')->nullable();
                $table->datetime('start_time')->nullable();
                $table->timestamps();
                $table->softDeletes();
            });
        }
    }
  • class Project extends Model implements HasMedia
    {
        use SoftDeletes, InteractsWithMedia, HasFactory;
    
        public $table = 'projects';
    
        protected $appends = [
            'logo',
        ];
    
        public static $searchable = [
            'name',
        ];
    
        protected $dates = [
            'start_date',
            'start_time',
        ];
    
        protected $fillable = [
            'name',
            'start_date',
            'start_time',
        ];
    }
    
  • class ProjectsController extends Controller
    {
        use MediaUploadingTrait;
    
        public function index()
        {
            abort_if(Gate::denies('project_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
    
            $projects = Project::with(['media'])->get();
    
            return view('admin.projects.index', compact('projects'));
        }
    
        public function create()
        {
            abort_if(Gate::denies('project_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
    
            return view('admin.projects.create');
        }
    
        public function store(StoreProjectRequest $request)
        {
            $project = Project::create($request->all());
    
            return redirect()->route('admin.projects.index');
        }
    
        // ... other methods
    }
    
  • class StoreProjectRequest extends FormRequest
    {
        public function authorize()
        {
            return Gate::allows('project_create');
        }
    
        public function rules()
        {
            return [
                'name'       => [
                    'string',
                    'nullable',
                ],
                'start_date' => [
                    'date_format:' . config('panel.date_format'),
                    'nullable',
                ],
                'start_time' => [
                    'date_format:' . config('panel.date_format') . ' ' . config('panel.time_format'),
                    'nullable',
                ],
            ];
        }
    }
  • @extends('layouts.admin')
    
    @section('content')
    @can('project_create')
        <div style="margin-bottom: 10px;" class="row">
            <div class="col-lg-12">
                <a class="btn btn-success" href="{{ route('admin.projects.create') }}">
                    {{ trans('global.add') }} {{ trans('cruds.project.title_singular') }}
                </a>
            </div>
        </div>
    @endcan
    <div class="card">
        <div class="card-header">
            {{ trans('cruds.project.title_singular') }} {{ trans('global.list') }}
        </div>
    
        <div class="card-body">
            <div class="table-responsive">
                <table class=" table table-bordered table-striped table-hover datatable datatable-Project">
                    <thead>
                        <tr>
                            // Headers
                        </tr>
                    </thead>
                    <tbody>
                        @foreach($projects as $key => $project)
                            // ... Rows
  • @extends('layouts.admin')
    
    @section('content')
    <div class="card">
        <div class="card-header">
            {{ trans('global.create') }} {{ trans('cruds.project.title_singular') }}
        </div>
    
        <div class="card-body">
            <form method="POST" action="{{ route("admin.projects.store") }}" enctype="multipart/form-data">
                @csrf
                <div class="form-group">
                    <label for="name">{{ trans('cruds.project.fields.name') }}</label>
                    <input class="form-control {{ $errors->has('name') ? 'is-invalid' : '' }}" type="text" name="name" id="name" value="{{ old('name', '') }}">
                    @if($errors->has('name'))
                        <div class="invalid-feedback">
                            {{ $errors->first('name') }}
                        </div>
                    @endif
                    <span class="help-block">{{ trans('cruds.project.fields.name_helper') }}</span>
                </div>
                // ... Other form fields
3

Customize Anything

Your project is made only of Laravel files. No QuickAdminPanel dependency. So modify the generated code easily. Our team can provide support if necessary.

Example articles on code customizations

Datatables Customizations

Here you see a list of the articles on our blog, about various customizations of Datatables. Buttons, reordering, background colors, etc.

Dependent Dropdowns: Parent-Child

How to build, for example, Country-City relationship where change of Country value refreshes the values of Cities.

Add a Front-end User

What if you want to have a Simple front-end User as a front-end user, and they wouldn't even see/access the admin panel?

BelongsToMany: Add Fields to Pivot

QuickAdminPanel has belongsToMany relationship field, but no extra columns in pivot tables. This article shows the solution.

Now it's your turn. Start building in minutes.

Get started for free. No creditcard is required for the trial period.

Testimonials

See what our clients say.

[...from email...]
Thanks again for the excellent and super-quick response and support. I'm so glad I signed up for the Quick Admin Panel service.

Stephen McGloughlin

President, MediaQ.net

[...from live-chat...]
Completed the draft of the waste management system in under two weeks, saved me many hours of fumbling around. For my next project I have no hesitation to use the admin panel again.

Raymond Breen

Developer, Corp Networking Limited, United Kingdom

When I bought the package, I was very basic in Laravel Development but now I manage a team of Laravel Developers and we save a lot of time developing with QuickAdminPanel.
Support from the creator himself is the best I ever had from any service provider.

Pricing

Yearly Membership or One Quick Project?

Unlimited Plan

Yearly payment, for unlimited panels.

$ 99.99 /year

  • Unlimited Projects/Panels

  • Unlimited CRUD & Menus

  • All Modules and Functions

  • Vue.js and Livewire generator versions

  • 50% off LaravelDaily Courses

Try for free

You can also pay monthly for $14.99/month
(but that won't include Vue.js/Livewire versions and 50% off courses)

One Project

One-time payment, for one panel.

$ 29.99

  • Only One Project/Panel

  • Unlimited CRUD & menus

  • All Modules and Functions

  • Only jQuery generator version

Try for free
Illustration

Hi, I'm Povilas Korop - founder of QuickAdminPanel. As a Laravel developer, I am obsessed with effectiveness and speed of development - so that clients get the first version of the product as soon as possible.

I personally care a lot about this project, and I even answer most of the support queries myself. Being both a developer and a client, I understand both worlds and try to apply that knowledge to QuickAdminPanel.