PHPackages                             regulus/fractal - 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. [Framework](/categories/framework)
4. /
5. regulus/fractal

ActiveLibrary[Framework](/categories/framework)

regulus/fractal
===============

A versatile CMS for Laravel 5.

v0.9.4(10y ago)231992[1 PRs](https://github.com/Regulus343/Fractal/pulls)MITPHPPHP &gt;=5.4.0

Since Jul 17Pushed 10y ago6 watchersCompare

[ Source](https://github.com/Regulus343/Fractal)[ Packagist](https://packagist.org/packages/regulus/fractal)[ RSS](/packages/regulus-fractal/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (9)Versions (8)Used By (0)

Fractal
=======

[](#fractal)

**A versatile CMS for Laravel 5.**

[![Latest Stable Version](https://camo.githubusercontent.com/ff25baa4dc51eadb258fc20efbdbc4985eec02c886a6bd2a9692ba849664f4d2/68747470733a2f2f706f7365722e707567782e6f72672f726567756c75732f6672616374616c2f762f737461626c652e737667)](https://packagist.org/packages/regulus/fractal) [![License](https://camo.githubusercontent.com/6567751782fa2e8d00a409326ebcd426a621b5f659ed19c17e87ca62c3c2fc91/68747470733a2f2f706f7365722e707567782e6f72672f726567756c75732f6672616374616c2f6c6963656e73652e737667)](https://packagist.org/packages/regulus/fractal)

> **Note:** For Laravel 4, you may use [version 0.8.2](https://github.com/Regulus343/Fractal/tree/v0.8.2).

[![Screenshot](resources/screenshot.png)](resources/screenshot.png)

Fractal is a content management system for Laravel which maintains freedom and easy access to customization, to a range of different degrees. You can do all of this out of the box:

- Manage content pages for website
    - Create as many separate content areas as you like and create content in Markdown or an HTML WYSIWYG editor
    - Use the layout template system to re-use standardized and custom layouts across pages
    - Re-use content areas across multiple pages
- Manage files
    - Upload files
    - Resize images
    - Create thumbnail images
- Manage blog articles
    - Make use of the same versatile content area system as content pages uses
- Manage media items (images, video, audio, and more...)
- Manage website / web application settings
- Manage all menus via database, for both front-end website (optional of course) and admin/CMS area
- Manage users
- Customize routes, controllers, and subdomains (by default, "blog" and "media" subdomains are used)
- Use built-in front-end views and Blade layouts or use your own

Please keep in mind though that there are a variety of different levels of customization available from using all or a partial set of custom controllers (Fractal's controller and method routes are set in `config.php` for easy modification), using custom views, or even just customizing any of the many available config settings or database-stored settings in the CMS' Settings page. The level of control of your website or web application that you wish to externalize from Fractal is entirely up to you.

A couple more things that should be mentioned before we get started with the Table of Contents:

- Fractal uses the [Identify](https://github.com/Regulus343/Identify) authorization / authentication package and uses Twitter Bootstrap 3 as its CSS framework.
- You may view [Fractal on Trello](https://trello.com/b/ZaGw8Jly/fractal) to see what's on the bug fixing and feature implementation roadmap.

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Installation: Authentication](#auth-installation)
- [First Log In](#first-log-in)
- [Basic Usage](#basic-usage)

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

[](#installation)

**Install composer package:**

To install Fractal, make sure "regulus/fractal" has been added to Laravel 5's `composer.json` file.

```
"require": {
	"regulus/fractal": "0.9.*"
},

```

Then run `php composer.phar update` from the command line. Composer will install the Fractal package.

**Register service provider and set up alias:**

Now, all you have to do is register the service provider, set up Fractal's alias in `config/app.php`, publish the assets, and run the install command. Add this to the `providers` array:

```
Regulus\Fractal\FractalServiceProvider::class,

```

And add this to the `aliases` array:

```
'Fractal' => Regulus\Fractal\Facade::class,

```

**Add middleware to the `routeMiddleware` array in `app/Http/Kernal.php`:**

```
'auth.permissions' => \Regulus\Identify\Middleware\Authorize::class,
'auth.fractal'     => \Regulus\Fractal\Middleware\Authenticate::class,

```

**Add and run the install command:**

Add the following to the `commands` array in `app/Console/Kernel.php`:

```
\Regulus\Identify\Commands\Install::class,
\Regulus\Identify\Commands\CreateUser::class,
\Regulus\Fractal\Commands\Install::class,

```

**Set the sessions domain:**

Set the `domain` variable in `config/sessions.php` to ensure that session data is carried across subdomains:

```
'domain' => '.website.com',

```

Then run the following command:

```
php artisan fractal:install

```

Fractal (along with Identify) will now be installed. This includes all necessary DB migrations, DB seeding, config publishing, and asset publishing.

The config file that is published for Identify is `auth.php` and will overwrite Laravel 5's default auth configuration. The default table names are prefixed with `auth_`, but you may alter the users table name by adding a `--user-tables-prefix` option to the install line:

```
php artisan fractal:install --user-tables-prefix=none

php artisan fractal:install --user-tables-prefix=identify

```

The former example will remove the prefix from all of the table names, so you will get `users`, `roles`, etc. The latter example will change the default table prefix of `auth` to `identify` so your table names will be `identify_users`, `identify_roles`, etc.

You should now have 4 users, `Admin`, `TestUser`, `TestUser2`, and `TestUser3`. All of the default passwords are simply `password` and the usernames are case insensitive, so you may simply type `admin` and `password` to log in. The 3 initial roles are `Administrator`, `Moderator`, and `Member`. `Admin` has the `Administrator` role, `TestUser` has the `Moderator` role, and the final 2 users have the `Member` role.

The install command will also attempt to automatically add a singleton to `bootstrap/app.php` which swaps out Laravel's default `LoadConfiguration` class to allow delaying the loading of certain config files until after Fractal's service provider runs. If the install command is not able to add the singleton, go into `bootstrap/app.php` and add this after the other singletons under the "Bind Important Interfaces" heading:

```
$app->singleton(
	Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
	Regulus\Fractal\Libraries\LoadConfiguration::class
);

```

Installation for Authentication
-------------------------------

[](#installation-for-authentication)

**Install Composer package:**

To install Identify, make sure "regulus/identify" has been added to Laravel 5's `composer.json` file.

```
"require": {
	"regulus/identify": "dev-master"
},

```

Then run `php composer.phar update` from the command line. Composer will install the Identify package.

**Register service provider and set up alias:**

Add this to the `providers` array in `config/app.php`:

```
'Regulus\Identify\IdentifyServiceProvider',

```

First Log In
------------

[](#first-log-in)

**Logging in:**

To log in, go to `website.com/admin` where "website.com" is the name of the site you have installed Fractal on. Type "Admin" and "password" as your username and password and click "Log In".

You should now be logged in to Fractal for the first time. You should now be able to manage the CMS and the settings of the website or web application.

**Enabling Developer Mode:**

To set a `developer` session variable to `true`, go to `website.com/admin/developer`. This will identify you as the web developer for Fractal and you may be able to see more information and manage extra settings. To turn off Developer Mode, go to `website.com/admin/developer/off`.

Basic Usage
-----------

[](#basic-usage)

**Adjusting Fractal's base URI:**

By default, Fractal's base URI is `admin` making your URLs like `website.com/admin/pages/home/edit`. You may adjust this in the `base_uri` variable in `config.php`.

**Adding additional controllers:**

You may add additional controllers or point existing defined controllers to alternates in the `controllers` array in `config.php`. Use `standard` for standard Laravel controllers and `resource` for resource controllers.

**Other configuration options:**

Look around in the various config files such as `config`, `blogs`, `media`, `tables`, and `social` to see what other configuration options can easily be customized as well. Most config variables have detailed descriptions that should help you to understand how different things can be customized. The config files `menus` and `settings`, however, are exported from the database automatically to minimize a Fractal-driven website's need to make certain database queries on each page load.

**Get Bootstrap-ready menu markup for a view:**

```
echo Fractal::getMenuMarkup(); //get "Main" menu markup

echo Fractal::getMenuMarkup('Footer'); //get "Footer" menu markup

echo Fractal::getMenuMarkup('Footer', ['class' => 'nav nav-pills']); //set class attribute for menu

```

**Getting an array of menu items:**

```
$menu = Fractal::getMenuArray(); //get "Main" menu array

$menu = Fractal::getMenuArray('Footer'); //get "Footer" menu array

```

**Setting a page title:**

Fractal already uses [SolidSite](https://github.com/Regulus343/SolidSite) to handle page titles, breadcrumb trails, and some other things which means that if you are using Fractal's public layout for your website, you may set page titles using the following code.

```
//title HTML tag may look like "A Page Title :: Website.com" depending on config
Site::set('title', 'A Page Title');

//this can be used to differentiate the title that actually appears on the page from the primary title
Site::set('titleHeading', 'Alternate Title in Content');

//you may show the title using these
echo Site::title();

echo Site::titleHeading(); //will use "titleHeading" if it is set and if not will default to "title"

```

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity53

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

Total

7

Last Release

3905d ago

PHP version history (2 changes)v0.4.7PHP &gt;=5.3.0

v0.8.0PHP &gt;=5.4.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/b9fbf9ff50ea191fd9d3994c3aa294aad3c72e57e03fe534af815f7b50a70b26?d=identicon)[Regulus](/maintainers/Regulus)

---

Top Contributors

[![Regulus343](https://avatars.githubusercontent.com/u/967717?v=4)](https://github.com/Regulus343 "Regulus343 (314 commits)")

### Embed Badge

![Health badge](/badges/regulus-fractal/health.svg)

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

###  Alternatives

[laravel/octane

Supercharge your Laravel application's performance.

4.0k24.7M205](/packages/laravel-octane)[unopim/unopim

UnoPim Laravel PIM

10.5k2.2k](/packages/unopim-unopim)[code16/sharp

Laravel Content Management Framework

79062.6k7](/packages/code16-sharp)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[ecotone/laravel

Ecotone for Laravel — CQRS, Event Sourcing, Sagas, Durable Workflows, and Outbox on top of Laravel Queue, via PHP attributes.

21313.7k3](/packages/ecotone-laravel)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3911.7k](/packages/codewithdennis-larament)

PHPackages © 2026

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