Developer Local Development (Monorepo)

Local Development (Monorepo)

Want to hack on Laravix itself — the core or the default theme? Then you need the development monorepo instead of the distribution. This article explains the repository layout and gets it running with Laravel Sail.

Note: If you just want to build a website with Laravix, use the distribution instead — see Installation.

Repository layout

The monorepo is a full Laravel application that installs the core from a local path (symlinked by Composer):

Path What it is
packages/laravix/cms The distributable core — models, Filament resources, blocks, API, commands. This is the only package in the monorepo.
packages/laravix/cms/resources/themes/default The source of the default theme, published into themes/ on installation.
themes/default The default theme as it exists in this application — see Theme Structure.
app/, config/, routes/ The host application — thin glue around the package.
.github/workflows/split.yml Mirrors packages/laravix/cms into the standalone Laravix/cms repository on every push and tag.

First-party plugins moved. The Docs and Changelog plugins used to live here as packages/laravix/docs-plugin and packages/laravix/changelog-plugin. They were moved out of the core in v0.11.0 and now live in the repository of the laravix.com website, which consumes laravix/cms like any other installation. They are still the reference examples for Plugin Development — just not in this repository.

Prerequisites

  • Docker (the monorepo runs in Laravel Sail containers: PHP, MySQL, Meilisearch, Mailpit)
  • Composer and PHP 8.4 on the host for the initial composer install
  • Node.js for building assets

Not laravix:docker. That command generates a Docker environment for a Laravix installation — it is part of the distribution, not of this repository. The monorepo has its own compose.yaml driven by Sail.

Setup

git clone https://github.com/MartinKoudela/laravix-cms.git
cd laravix-cms

composer install
cp .env.example .env

vendor/bin/sail up -d
vendor/bin/sail artisan key:generate
vendor/bin/sail artisan migrate --seed
vendor/bin/sail npm install
vendor/bin/sail npm run build

Open http://localhost/admin and log in. The seeder creates three accounts, all with the password example_:

Email Access
[email protected] Super admin — all sites
[email protected] Regular user
[email protected] Regular user

Tip: Run every PHP, Artisan, Composer and Node command through vendor/bin/sail so it executes inside the containers. An alias helps: alias sail='vendor/bin/sail'.

Everyday commands

vendor/bin/sail artisan test --compact   # run the Pest test suite
vendor/bin/sail bin pint --dirty         # format changed PHP files
vendor/bin/sail npm run dev              # Vite dev server with hot reload
vendor/bin/sail artisan pail             # tail application logs

The stack: Laravel 13, Filament 5, Livewire 4, Tailwind CSS 4, GrapesJS, Meilisearch, Pest 4 on PHP 8.4.

Editing the core

Because packages/*/* are installed as symlinked path repositories, changes to files under packages/laravix/cms apply immediately — no composer update needed.

Frontend changes (admin theme, builder JavaScript) need a rebuild: vendor/bin/sail npm run build, or keep npm run dev running.

Troubleshooting

"Unable to locate file in Vite manifest". Assets aren't built yet — run vendor/bin/sail npm run build.

Login fails with correct credentials. The user has no site and isn't a super admin. Create a proper account with vendor/bin/sail artisan laravix:user and answer yes to the super admin question.

Port 80 is taken. Set APP_PORT in .env before sail up.

Laravix Documentation · 25.08.2026
Star on GitHub