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-pluginandpackages/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 consumeslaravix/cmslike 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 owncompose.yamldriven 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_:
| 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/sailso 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.
Related articles
- Installation — the distribution for building sites
- Plugin Development
- Theme Structure