# Installation

# Requirements

  • PHP ^8.0
  • Laravel 8|9
  • MySQL 5.7+ / PostgreSQL 9.2+
  • exif PHP extension (on most systems it will be installed by default)
  • intl PHP extension (on most systems it will be installed by default)
  • GD PHP extension (used for image manipulation)

# Install GetCandy

Beta Software

GetCandy is currently in Public Beta. The software may not be stable enough for a production site and further beta releases may bring breaking changes.

# Composer Require Package

composer require getcandy/admin

# Publish the Config Files

php artisan vendor:publish --tag=getcandy

# Add the GetCandyUser Trait

Some parts of the core rely on the User model having certain relationships set up. We've bundled these into a trait which you must add to any models that represent users in your database.

use GetCandy\Base\Traits\GetCandyUser;
// ...

class User extends Authenticatable
    use GetCandyUser;
    // ...

# Search Configuration

GetCandy uses Laravel Scout for search. We have had good success using Meilisearch, although it's entirely up to you which driver you use, as long as it's compatible.

If you just want to give the wheels a spin, we also ship with a MySQL driver. Just bear in mind this is highly restrictive and we do not recommend using this in any production capacity.

Publish the Scout config.

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

By default, scout has the setting soft_delete set to false. You need to make sure this is set to true otherwise you will see soft deleted models appear in your search results.

# Going with Meilisearch


Meilisearch is the recommended search driver for GetCandy.

If you're on OSX then you can use Takeout (opens new window) which makes installing Meilisearch via Docker a breeze.

Meilisearch also provide great documentation on how to get set up.

Install Meilisearch (opens new window)

Once you have Meilisearch up and running, simply require the composer packages.

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

Add/update the entry in your .env file as follows, changing the host and key as required.


See the Laravel Scout documentation (opens new window) for more information.

# Going with MySQL

Development Only

We suggest the MySQL driver is only used for development purposes.

Add/update the entry in your .env file as follows.


Then finally, add this to your scout.php config file.

| MySQL Configuration
'mysql' => [
    'mode' => 'LIKE_EXPANDED',
    'model_directories' => [app_path()],
    'min_search_length' => 0,
    'min_fulltext_search_length' => 4,
    'min_fulltext_search_fallback' => 'LIKE',
    'query_expansion' => false

# Admin Hub

# Publish Assets

The admin hub requires some assets to work. Run the following command to publish them to your public directory.

php artisan getcandy:hub:install

# Run Migrations


GetCandy uses table prefixes to avoid conflicts with your app's tables. You can change this in the configuration.


GetCandy assumes your User ID field is a "BIGINT". If you are using an "INT" or "UUID", you will want to update the configuration in config/getcandy/database.php to set the correct field type before running the migrations.

As you'd expect, there's quite a few tables GetCandy needs to function, so run the migrations now.

You can optionally publish these migrations so they're added to your Laravel app.

php artisan vendor:publish --tag=getcandy-migrations
php artisan migrate

# Run the Artisan Installer

php artisan getcandy:install

This will take you through a set of questions to configure your GetCandy install. The process includes...

  • Creating a default admin user (if required)
  • Seeding initial data
  • Inviting you to star our repo on GitHub ⭐

# Final Meilisearch Set-up

If you are using Meilisearch, you just need to do some final configuration. Simply run this command.

php artisan getcandy:meilisearch:setup

Success 🎉

You are now installed! You can access the admin hub at http://<yoursite>/hub

# Spread the Word

If you enjoy our project, please share it with others. The more developers using GetCandy the more we can put back into the project.

Get sharing on Twitter, Reddit, Medium, Dev.to, Laravel News, Slack, Discord, etc.

Go Team GetCandy! 🤟