PHPackages                             earlybirdmvp/foundry - 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. earlybirdmvp/foundry

ActiveLibrary[Admin Panels](/categories/admin)

earlybirdmvp/foundry
====================

A simple but powerful CRUD tool for Laravel

v0.3.0(11y ago)153Apache-2.0PHP

Since Aug 14Pushed 11y ago1 watchersCompare

[ Source](https://github.com/earlybirdmvp/foundry)[ Packagist](https://packagist.org/packages/earlybirdmvp/foundry)[ Docs](https://github.com/earlybirdmvp/foundry)[ RSS](/packages/earlybirdmvp-foundry/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (5)Used By (0)

foundry
=======

[](#foundry)

Easily perform CRUD tasks on Eloquent models

This is a replacement for Laravel's Resource Controllers, which are very lightweight.

Installation
------------

[](#installation)

Add "earlybirdmvp/foundry" to your composer.json file and run `composer update`.

Then add these lines to your `app/start/global.php` file:

```
View::addLocation(base_path().'/vendor/earlybirdmvp/foundry/views');
View::addNamespace('foundry', base_path().'/vendor/earlybirdmvp/foundry/views');
```

Getting Started
---------------

[](#getting-started)

First create your Foundry model.

```
class Product extends Eloquent {
    use Earlybird\Foundry;
}
```

Then create a Controller:

```
class ProductController extends BaseController {
    use Earlybird\FoundryController;
}
```

Finally add a Route resource group. See All of the "only", "except", etc. options can be used.

```
Route::resource('product', 'ProductController');
```

**That's all!**

Now you simply need to go to the URL `product` and you will see a paginated list of all Product objects. There is a button to create a new product, and columns with unique indexes link to edit the individual resource.

Features
--------

[](#features)

- Works well with Bootstrap classes
- This is meant to be a CMS, not a DB admin tool. Therefore the Eloquent `$hidden` and `$guarded` arrays are respected and not visible or editable, respectively.
- If a column name has a comment, that is shown instead (can be used to create user-friendly labels)
- Supported data types:

```
bigint, char, date, decimal, enum, int, text, tinyint, varchar

```

- Validation is built in. `NOT NULL` columns are considered "required", any column containing "email" inside its name must be a valid email address, and columns with unique indexes are checked
- Validation errors are displayed next to the problematic input

- Very basic `belongsTo` relationships are supported. The column must end in `_id` and must have the same prefix as the name of the relationship. For example, if the `products` table has a `category_id` column, and this Eloquent relationship then it will work:

```
class Product extends Eloquent {
    use Earlybird\Foundry;

    public function category() {
        return $this->belongsTo('Category');
    }
}
```

- These `belongsTo` relationships are shown as select dropdowns where the value is the `id` and the option text is the `name` attribute. If the table does not have a `name` column, or you wish to change what is displayed, you can use `$appends`:

```
class Product extends Eloquent {
    use Earlybird\Foundry;

    protected $appends = array(
        'foundry_value',
    );
    public function getFoundryValueAttribute() {
        return $this->sku . ':  ' . $this->name;
    }
}
```

Options
-------

[](#options)

### Controller

[](#controller)

- Specify the model with `protected $model`. Default is class name with "Controller" stripped off.
- Set the number of items shown per page with `protected $per_page`. Default 10.
- If you wish to detect updates, create a `detectChange` function. This is called before `save()` so that you can compare the old and new values

```
class OrderController extends BaseController {
    use Earlybird\FoundryController;

    public function detectChange() {
        // Email customer update that order status was changed
    }
}
```

Todo
----

[](#todo)

- sort and filter the index page
- support more data types
- improve validation for dates
- improve support for relationships
- delete resources
- bulk updates and deletes
- more flexible layout

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

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 ~38 days

Total

4

Last Release

4173d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9fb0313763ebac2bf0b26e5e32981f6f5866cc54ec6c822e1a3f1944c7f81a04?d=identicon)[btothez](/maintainers/btothez)

---

Top Contributors

[![kmkroski](https://avatars.githubusercontent.com/u/6798194?v=4)](https://github.com/kmkroski "kmkroski (1 commits)")

---

Tags

laravelcrudactiverecord

### Embed Badge

![Health badge](/badges/earlybirdmvp-foundry/health.svg)

```
[![Health](https://phpackages.com/badges/earlybirdmvp-foundry/health.svg)](https://phpackages.com/packages/earlybirdmvp-foundry)
```

###  Alternatives

[laravelrus/sleepingowl

Administrative interface builder for Laravel.

810219.6k3](/packages/laravelrus-sleepingowl)[andreacivita/api-crud-generator

Simple API Crud generator for Laravel

131.2k](/packages/andreacivita-api-crud-generator)

PHPackages © 2026

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