noerd / noerd
Requires
- composer/composer: ^2.9
- livewire/livewire: ^4.0
- noerd/modal: ^0.2
- wireui/heroicons: ^2.9
Requires (Dev)
- pestphp/pest: ^4.0
- dev-main
- v0.5.1
- v0.5.0
- v0.4.6
- v0.4.5
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.24
- v0.2.22
- v0.2.21
- v0.2.19
- v0.2.18
- v0.2.17
- v0.2.16
- v0.2.15
- v0.2.14
- v0.2.13
- v0.2.12
- v0.2.11
- v0.2.10
- v0.2.9
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- dev-feature/add-field-type-regstiry
- dev-feature/tenant-languages
- dev-feature/-ui-library
This package is auto-updated.
Last update: 2026-05-06 18:30:16 UTC
README
Build admin panels and business apps for Laravel — without touching your production code. Zero intrusion: no traits, no base classes, no boilerplate. Just YAML configs.
For full documentation, visit noerd.dev.
Key Features
- Business Apps – Build self-contained apps (Accounting, CMS, Booking, Production Planning, …) and assign them per tenant or per user
- List Views – Sortable, searchable, paginated tables — configured in a single YAML file (list view, list filters, list search)
- Detail Views – Tabbed forms with embedded related lists, built-in validation, and dynamic field layouts (detail view)
- Smart Field Types – Text, date, file, image, rich text, relations, and dynamic picklists (field types, relation fields)
- Setup Collections – Manage lookup tables (categories, countries, templates) via YAML — no migrations or models required (setup collections)
- Hierarchical Navigation – Nested menu groups with Heroicons, defined in YAML (navigation)
- Multi-Tenant Architecture – Complete data isolation with per-tenant app assignment
- Multi-Language – Translation management baked in
- UI Building Blocks – Reusable modal, banner, and quick menu components
Demo
A hosted demo with two pre-installed apps (a Content Management System and a Study App):
Requirements
- PHP 8.4+
- Laravel 12+
- Livewire 4+
Quickstart
# 1. Install the package composer require noerd/noerd php artisan noerd:install # 2. Create a model and migration php artisan make:model Customer -m # 3. Generate list, detail, YAML configs, navigation entry, and routes php artisan noerd:make-resource Customer
The installation wizard guides you through creating an admin user and an initial tenant.
Recommended Configuration
If you don't want to configure $guarded on every model individually, unguard globally in your AppServiceProvider:
use Illuminate\Database\Eloquent\Model; public function boot(): void { Model::unguard(); }
YAML in Action
A full CRUD screen is two YAML files. No PHP, no Blade.
app-configs/demo/lists/customers-list.yml
title: Customers actions: - label: New Customer action: listAction columns: - field: name label: Name - field: company_name label: Company - field: email label: Email - field: city label: City
app-configs/demo/details/customer-detail.yml
title: Customer fields: - name: detailData.name label: Name type: text colspan: 6 required: true - name: detailData.email label: Email type: email colspan: 6 - name: detailData.phone label: Phone type: text colspan: 6
Apps & Navigation
Noerd is built around apps — each with its own navigation YAML and assignable per tenant.
# Create a new app php artisan noerd:create-app # Assign apps to tenants php artisan noerd:assign-apps-to-tenant
See creating apps and all artisan commands.
Auto installed packages
Composer
wireui/heroicons— Heroicon SVG componentspestphp/pest(dev) — Testing framework
NPM
@tiptap/core— Rich text editor core
Installation as Submodule to contribute
If you want to contribute to the development of Noerd, you can install it as a git submodule:
git submodule add git@github.com:noerd-dev/noerd.git app-modules/noerd
Then add a path repository and the package to your composer.json:
"repositories": [ { "type": "path", "url": "app-modules/noerd", "options": { "symlink": true } } ], "require": { "noerd/noerd": "*" }
Then run:
composer update noerd/noerd php artisan noerd:install
This way, you can make changes directly in app-modules/noerd and push them back to the Noerd repository.