Skip to content

Installation ​

A new site starts from the Evolve starter: a Laravel 12 skeleton with racerfish/evolve installed, the panel wired, and the theme ready to publish. Everything below runs once per project.

Step by step

The recipe Launch a new client site takes these steps through to the deployed site and the switch to live.

1. Create the project ​

sh
composer create-project racerfish/evolve-starter --ask --repository '{"type": "vcs", "url": "https://github.com/racerfish/evolve-starter"}' --remove-vcs

Composer asks for the folder name and installs the dependencies. The starter's install wizard (php artisan evolve:install) writes the .env, including one EVOLVE_MODULE_<KEY> switch per module (since 2.21); cd into the folder afterwards.

2. Database ​

sh
php artisan migrate
php artisan evolve:seed

evolve:seed seeds the default language, the roles, a home page and the default forms. The panel is at /evolve; the first user is created through the panel's registration or with an invitation, see Roles.

3. Modules ​

Decide which modules the site uses in config/evolve.php under modules, or with EVOLVE_MODULE_<KEY> in the .env. Every module and what it adds is on Modules. Run php artisan migrate again after enabling a module for the first time.

4. Blueprints ​

Without published blueprint classes no block renders. Publish them from the core and from every module whose blocks the site uses:

sh
php artisan vendor:publish --tag=evolve.blueprints
php artisan vendor:publish --tag=blog.blueprints --tag=company.blueprints --tag=event.blueprints --tag=scout24.blueprints
php artisan vendor:publish --tag=locator.components --tag=shopify.components --tag=scout24.components

The published classes in app/Blueprints are the project's to edit, see Blueprints.

5. Theme ​

The starter ships without a theme/ directory. Publish the default theme from the package, install its dependencies and build:

sh
php artisan theme:publish
yarn theme:install
yarn theme:build      # or yarn theme:dev for the dev server with hot reload

Theme development is covered in Frontend.

6. Keys and settings ​

The .env holds only what has to live in the environment: APP_URL (the real domain, the page cache and the sitemap depend on it), the database, the mail transport, the posture, API secrets and module switches. The starter's .env.example 2.19 is grouped and commented along these lines and carries no site settings.

Everything the site shows is set in the panel under Settings and stored in the database: site name and branding (General), company identity (Company), sender name and addresses (Mail), tracking ids and consent (Tracking), verification codes (SEO). Walk these tabs once after the first login; the "inherit from .env" options exist for sites whose .env predates the settings store. Environment Variables is the reference for the .env, Integrations the per-service checklist for the secrets.

7. Environments and deployment ​

Declare the live and staging environments in config/evolve.php under deployment, then php artisan evolve:env:setup staging bootstraps the server side and php artisan deploy staging ships the first release. See Environments and Deployment.

Update channel ​

The racerfish/evolve constraint in composer.json decides which releases a project receives. Production projects keep ^2.0 and get stable releases only. A test site can ride release candidates of the next line with ^2.17@RC (naming the unreleased line; a wider ^2.0@RC keeps resolving to the newest stable because of prefer-stable), and a single feature branch can be validated with an inline alias such as dev-feature/some-feature as 2.99.x-dev. RELEASING.md in evolve-cms explains how releases and candidates are cut.

Working on Evolve itself?

See Workbench to boot the package's own demo installation, no host application required.