schoolaid/nadota

Laravel admin panel package for resource-based CRUD interfaces similar to Laravel Nova
1,006
Install
composer require schoolaid/nadota
Latest Version:1.2.6
PHP:^8.2|^8.3
Laravel:11 · 12
License:MIT
Last Updated:Sep 29, 2026
Links: GitHub  ·  Packagist
Maintainer: hsingli

Nadota

Laravel admin panel package for resource-based CRUD interfaces, similar to Laravel Nova — API-driven, built for an Inertia/SPA frontend.

Latest Stable Version License

Nadota lets you build administrative interfaces for Eloquent models through Resource classes that declare how data is displayed, validated, filtered, related, and authorized. It exposes everything as a REST/JSON API your frontend consumes.

  • Package: schoolaid/nadota
  • Version: 1.1.4
  • Namespace: SchoolAid\Nadota

Features

  • Resource-based architecture — define admin panels declaratively
  • 35+ field types — text, numeric, date/time, boolean, selection, file/media, code/JSON, signature, dynamic, computed, and layout fields
  • 11 relationship types — BelongsTo, HasOne, HasMany, BelongsToMany, HasManyThrough, HasOneThrough, MorphTo, MorphOne, MorphMany, MorphToMany, MorphedByMany
  • Advanced filtering — built-in filters (boolean, date, range, select, relation, exists, morph) plus custom filters
  • Sorting & searching — per-field configuration
  • Authorization — Laravel policy integration with granular per-field gates
  • Actions & Action Events — bulk/row operations with built-in audit logging
  • Attachments — attach/detach/sync for relation fields
  • Exports — CSV and Excel
  • Soft deletes — trashed listing, restore, force delete

Requirements

  • PHP ^8.2 | ^8.3
  • Laravel ^11.0 | ^12.0

Installation

composer require schoolaid/nadota

Publish the configuration (optional — it is also merged automatically):

php artisan vendor:publish --provider="SchoolAid\Nadota\NadotaServiceProvider" --tag="nadota-config"

See the Installation guide for migrations and the optional provider stub.

Quick Start

Create a resource in app/Nadota (auto-discovered):

<?php

namespace App\Nadota;

use SchoolAid\Nadota\Resource;
use SchoolAid\Nadota\Http\Requests\NadotaRequest;
use SchoolAid\Nadota\Http\Fields\Input;
use SchoolAid\Nadota\Http\Fields\Email;
use SchoolAid\Nadota\Http\Fields\Relations\BelongsTo;

class UserResource extends Resource
{
    public string $model = \App\Models\User::class;

    public function fields(NadotaRequest $request): array
    {
        return [
            Input::make('Name', 'name')->sortable()->searchable()->required(),
            Email::make('Email', 'email')->rules(['email', 'unique:users,email'])->searchable(),
            BelongsTo::make('Role', 'role')
                ->relatedModel(\App\Models\Role::class)
                ->relationAttribute('name')
                ->filterable(),
        ];
    }
}

The resource is served under the nadota-api prefix:

GET    /nadota-api/users
POST   /nadota-api/users
GET    /nadota-api/users/{id}
PUT    /nadota-api/users/{id}
DELETE /nadota-api/users/{id}

Full walkthrough: Quick Start.

Documentation

Complete documentation lives in docs/:

Testing

composer test            # run the Pest suite
composer test-coverage   # with coverage
./vendor/bin/pest tests/Unit/Fields/InputTest.php   # a single file

Code Quality

composer analyse   # PHPStan static analysis
composer format    # Laravel Pint

License

The MIT License (MIT). See the license field in composer.json.

Changelog

See CHANGELOG.md.

Related Packages

laravelrus/sleepingowl

Administrative interface builder for Laravel.

224,969 806
yaro/jarboe

Awesome package to build admin panels

11,393 5
dskripchenko/laravel-admin

Laravel admin constructor: Resource-first CRUD, Vue 3 SPA, JSON-API transport. P...

3,060 1
sineld/voyager

Voyager — the missing Laravel admin. Maintained fork supporting Laravel 12/13/14...

1,370 0
uccello/uccello

Uccello is a Laravel Package for providing a way to make easily complete web app...

1,711 6

Version History

Version Released PHP Laravel License
1.2.6 ^8.2|^8.3 ^11.0|^12.0 MIT
1.2.5 ^8.2|^8.3 ^11.0|^12.0 MIT
1.2.4 ^8.2|^8.3 ^11.0|^12.0 MIT
1.2.3 ^8.2|^8.3 ^11.0|^12.0 MIT
1.2.2 ^8.2|^8.3 ^11.0|^12.0 MIT