Installation

For upgrading from an earlier AppShell versions refer to the Upgrade section.

Requirements

As of AppShell v4.0, the requirements are:

  • PHP 8.2 - 8.3
  • Laravel 10.x, 11.x

Install AppShell

Either create a new Laravel project or go to an existing Laravel 10+ application's root folder and launch these commands:

composer require konekt/appshell
touch config/concord.php

Edit config/concord.php and add this content to it:

<?php

return [
    'modules' => [
        Konekt\AppShell\Providers\ModuleServiceProvider::class
    ]
];

If you have multiple Concord modules, AppShell typically needs to be the very first one in the list.

Test if it works by invoking the command:

php artisan concord:modules

Now you should see this:

+----+---------------------+------+----------+------------------+-----------------+
| #  | Name                | Kind | Version  | Id               | Namespace       |
+----+---------------------+------+----------+------------------+-----------------+
| 1. | Konekt AppShell Box | Box  | 4.6.0    | konekt.app_shell | Konekt\AppShell |
+----+---------------------+------+----------+------------------+-----------------+

TIP: Try php artisan concord:modules -a to see ALL modules

Configure .env, along with a database.

Afterwards run the migrations:

php artisan migrate

AppShell (with the underlying modules) contains ~20 migrations out of the box.

Laravel Auth Support

Auth Scaffolding

Depending on your needs, Laravel offers you several starter kits for authentication: https://laravel.com/docs/11.x/starter-kits

As a reference, here we're showing you how to install breeze with blade, but you can choose any other solution you like.

composer require laravel/breeze --dev

php artisan breeze:install

The User Model

AppShell offers a pre-built User model, that is an extended version of the default Laravel User class. It's not mandatory to use this class though, it's possible to use your own models instead.

To complete user setup, you have several options, see some of the variants below.

Variant 1 - Simple

Modify App\User so that it extends AppShell's user model:

// app/User.php
namespace App;

// No need to use Laravel default traits and properties as
// they're already present in the base class exactly as
// they're defined in a default Laravel installation
class User extends \Konekt\AppShell\Models\User
{
}

Add this to your AppServiceProviders's boot method:

   $this->app->concord->registerModel(\Konekt\User\Contracts\User::class, \App\User::class);

Variant 2 - Flexible

In case you don't want to extend AppShell's User class, then it's sufficient to implement its interface:

// app/User.php
// ... The default User model or arbitrary code for your app

// You can use any other base class eg: TCG\Voyager\Models\User
use Illuminate\Foundation\Auth\User as Authenticatable;
use Konekt\User\Contracts\Profile;
use Konekt\User\Contracts\User as UserContract;

class User extends Authenticatable implements UserContract
{
    // ...

    // Implement these methods from the required Interface:
    public function inactivate()
    {
        $this->is_active = false;
        $this->save();
    }

    public function activate()
    {
        $this->is_active = true;
        $this->save();
    }

    public function getProfile(): ?Profile
    {
        return null;
    }

    // ...
}

Add this to your AppServiceProviders's boot method:

   $this->app->concord->registerModel(\Konekt\User\Contracts\User::class, \App\User::class);

Variant 3 - No App\User

If the "final" user class is not going to be App\User then don't forget to modify model the configuration in your app's config/auth.php file:

    //...
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            // 'model' => App\User::class <- change this to:
            'model' => Konekt\AppShell\Models\User::class,
        ],
    //...

Create An Initial Super User

Run command php artisan make:superuser.

This will ask a several questions and create a proper superuser that you can start working with.

Frontend Installation

Since this package will be built along with your application, it's assets need to be added to it:

1. Add Admin's CSS To Laravel Mix:

   // webpack.mix.js
   mix.js('resources/js/app.js', 'public/js')
    // Add these 2 lines:
   .js('vendor/konekt/appshell/src/resources/assets/js/appshell.standalone.js', 'public/js/appshell.js')
   .sass('vendor/konekt/appshell/src/resources/assets/sass/appshell.sass', 'public/css')
    // Keep the the original assets if needed or remove them if AppShell's UI is the only one of your app

2. Install the following npm packages:

npm add [email protected] [email protected] popper.js

3. Compile the assets with mix: npm run dev


Next: Application Prerequisites »