patrikjak/starter

Laravel app starter - admin panel

Maintainers

Package info

github.com/patrikjak/starter

pkg:composer/patrikjak/starter

Statistics

Installs: 324

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.7.1 2026-03-11 17:46 UTC

This package is auto-updated.

Last update: 2026-03-11 17:47:38 UTC


README

codecov

Installation

Install the package via Composer:

composer require patrikjak/starter

Documentation

Setup

After installing the package, add the package provider to the providers array in bootstrap/providers.php.

use Patrikjak\Starter\StarterServiceProvider;
use Patrikjak\Utils\UtilsServiceProvider;
use Patrikjak\Auth\AuthServiceProvider;

return [
    ...
    UtilsServiceProvider::class,
    AuthServiceProvider::class,
    StarterServiceProvider::class,
];

You need to have installed and configured patrikjak/utils and patrikjak/auth packages.

For fast setup, you can run this command:

php artisan install:pjstarter

It will publish assets, views and config file.

If you don't publish config file, you will miss all features of this package. I recommend add this script to your composer.json file:

"scripts": {
    "post-update-cmd": [
        "@php artisan vendor:publish --tag=pjstarter-assets --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-config --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-views --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-migrations --ansi --force"
    ]
}

All post-update-cmd can look like this:

"scripts": {
    "post-update-cmd": [
        "@php artisan vendor:publish --tag=pjutils-config --ansi --force",
        "@php artisan vendor:publish --tag=pjutils-assets --ansi --force",
        "@php artisan vendor:publish --tag=pjutils-translations --ansi --force",
        "@php artisan vendor:publish --tag=pjauth-assets --ansi --force",
        "@php artisan vendor:publish --tag=pjauth-config --ansi --force",
        "@php artisan vendor:publish --tag=pjauth-migrations --ansi",
        "@php artisan vendor:publish --tag=pjstarter-assets --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-config --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-views --ansi --force",
        "@php artisan vendor:publish --tag=pjstarter-migrations --ansi --force"
    ]
}

Adjust it to your needs. Be aware that --force flag will overwrite existing files.

Database Setup

1. Configure Auth Model

Set the user model in config/auth.php:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Patrikjak\Starter\Models\Users\User::class,
    ],
],

2. Run Migrations

php artisan migrate

3. Seed Roles and Permissions

The setup order matters - permissions must exist before they can be assigned to roles.

# Create roles (SUPERADMIN, ADMIN, USER) from the auth package
php artisan seed:user-roles

# Sync permissions to database (creates all permissions defined in PermissionsDefinition)
php artisan pjstarter:permissions:sync

4. Seed Application Data

Create your own seeders for roles with permissions, users, and content. The recommended seeder order:

  1. RoleSeeder - Assign permissions to roles (roles are created by seed:user-roles, permissions by pjstarter:permissions:sync)
  2. UserSeeder - Create users with role assignments
  3. Content seeders - Authors, article categories, articles, static pages, etc.

Quick Reset

php artisan migrate:fresh --force && php artisan seed:user-roles && php artisan pjstarter:permissions:sync && php artisan db:seed

Feature Toggles

Enable or disable features in config/pjstarter.php:

'features' => [
    'auth' => true,           // Authentication (false = open access, auth routes return 404)
    'dashboard' => true,      // Dashboard page
    'profile' => true,        // User profile and password change
    'static_pages' => false,  // Static pages with metadata and slugs
    'articles' => false,      // Articles, categories, and authors
    'users' => false,         // User, role, and permission management
],

When auth is set to false:

  • Auth routes (/login, /register, /password/*) return 404
  • Admin routes are accessible without authentication
  • All authorization checks are bypassed
  • Profile and change-password routes are disabled