PHPackages                             lvntr/starter-kit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. lvntr/starter-kit

ActiveLibrary[Admin Panels](/categories/admin)

lvntr/starter-kit
=================

Laravel Starter Kit with DDD architecture, Inertia.js, Vue 3, PrimeVue, and role-based permissions.

v12.0.22(today)019—0%PolyForm-Noncommercial-1.0.0PHPPHP ^8.2

Since Mar 19Pushed todayCompare

[ Source](https://github.com/lvntrdev/starter-kit)[ Packagist](https://packagist.org/packages/lvntr/starter-kit)[ RSS](/packages/lvntr-starter-kit/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (13)Versions (24)Used By (0)

Lvntr Starter Kit
=================

[](#lvntr-starter-kit)

A full-featured Laravel admin panel package built with **Laravel 12**, **Inertia.js v2**, **Vue 3**, **PrimeVue 4**, and **Tailwind CSS 4**. Follows DDD (Domain-Driven Design) architecture with built-in role-based permissions, activity logging, settings management, and more.

Features
--------

[](#features)

- **DDD Architecture** — Actions, DTOs, Queries, Events, Listeners
- **Role &amp; Permission Management** — Spatie Permission with dynamic resource-scoped permissions
- **User Management** — CRUD with avatar upload, soft deletes, 2FA support
- **Activity Logging** — Spatie Activity Log with a browsable admin interface
- **Settings Panel** — General, Auth, Mail, Storage settings stored in database
- **OAuth2 API** — Laravel Passport with personal access tokens and device authorization
- **Domain Scaffolding** — `make:sk-domain` command generates full DDD stack interactively
- **FormBuilder / DatatableBuilder / TabBuilder** — Reusable Vue component builders
- **Multi-language Support** — Translation files included, easily extendable
- **API Response Builder** — Fluent, consistent API responses with pagination support
- **Security Headers Middleware** — X-Frame-Options, HSTS, CSP and more

Tech Stack
----------

[](#tech-stack)

### Backend (PHP / Composer)

[](#backend-php--composer)

PackagePurpose**Laravel 12**Core framework**Inertia.js v2**Server-driven SPA — no API layer needed between backend and frontend**Laravel Fortify**Authentication backend (login, register, 2FA, password reset)**Laravel Passport**OAuth2 API authentication (personal access tokens, device authorization)**Laravel Wayfinder**Type-safe route generation for TypeScript**Spatie Permission**Role &amp; permission management with dynamic resource-scoped permissions**Spatie Activity Log**Model activity logging with browsable admin interface**Spatie Media Library**File uploads &amp; media collections (avatars, attachments)**Spatie Query Builder**Filter, sort, and include relationships via query string**Spatie Translatable**Multi-language model attributes (JSON-based)### Frontend (Node / npm)

[](#frontend-node--npm)

PackagePurpose**Vue 3**Reactive UI framework**PrimeVue 4**UI component library (DataTable, Dialog, Toast, Menu, etc.)**Tailwind CSS 4**Utility-first CSS framework**Inertia.js Vue 3**Client-side adapter for Inertia SPA**VueUse**Collection of Vue composition utilities**laravel-vue-i18n**Use Laravel translation files directly in Vue### Dev Tools

[](#dev-tools)

ToolPurpose**Vite**Frontend build tool with HMR**TypeScript**Type safety for frontend code**ESLint + Prettier**Code linting and formatting**Vitest**Unit testing for Vue components**Husky + lint-staged**Pre-commit hooks for code quality**Commitizen**Conventional commit messagesRequirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 12
- Node.js 18+
- MySQL / PostgreSQL / SQLite

Installation
------------

[](#installation)

### 1. Require the package

[](#1-require-the-package)

```
composer require lvntr/starter-kit
```

### 2. Run the install command

[](#2-run-the-install-command)

```
php artisan sk:install
```

This interactive wizard will:

1. Publish all application scaffolding (Controllers, Models, Routes, Vue pages, etc.)
2. Publish the package config file
3. Run database migrations
4. Run seeders (Roles, Permissions, Definitions, Settings)
5. Generate Passport encryption keys
6. Create a default admin user
7. Install npm dependencies and build frontend assets

**Non-interactive mode (CI/CD):**

```
php artisan sk:install --no-interaction
```

**Overwrite existing files:**

```
php artisan sk:install --force
```

### 3. Configure your `.env`

[](#3-configure-your-env)

```
APP_NAME="My Application"
APP_URL=https://my-app.test

DB_CONNECTION=mysql
DB_DATABASE=my_app
DB_USERNAME=root
DB_PASSWORD=
```

### 4. Access the admin panel

[](#4-access-the-admin-panel)

Open your browser and navigate to your app URL. Log in with the admin credentials shown after installation (default: `admin@demo.com` / `password`).

Updating
--------

[](#updating)

When a new version of the package is released:

```
composer update lvntr/starter-kit
php artisan sk:update
```

The update command uses a **hash-based tracking system** to safely update files:

- **Core files** (BaseAction, BaseDTO, Traits, Middleware, helpers) are always updated
- **User-modifiable files** (Controllers, Pages, Routes) are only updated if you haven't changed them
- **New files** from the package are automatically added
- **New migrations** are detected and optionally run

**Preview changes before applying:**

```
php artisan sk:update --dry-run
```

**Force update everything (overwrites your changes):**

```
php artisan sk:update --force
```

Publishing Optional Assets
--------------------------

[](#publishing-optional-assets)

The package keeps Vue components, language files, and config inside the package by default. If you need to customize them, publish them to your project:

```
# Interactive selection
php artisan sk:publish

# Publish Vue components (FormBuilder, DatatableBuilder, etc.)
php artisan sk:publish --tag=components

# Publish language files
php artisan sk:publish --tag=lang

# Publish config file
php artisan sk:publish --tag=config
```

Available Commands
------------------

[](#available-commands)

CommandDescription`sk:install`Full installation wizard`sk:update`Update package files preserving user changes`sk:publish`Publish optional assets for customization`make:sk-domain`Scaffold a complete DDD domain interactively`remove:sk-domain`Remove a domain and all its files`env:sync`Sync .env keys to .env.example### Domain Scaffolding

[](#domain-scaffolding)

Create a new domain with all DDD layers:

```
# Interactive mode
php artisan make:sk-domain

# With options
php artisan make:sk-domain Product --fields="name:string,price:decimal" --admin --api --events --vue=full
```

This generates: Model, Migration, Factory, DTO, Actions, Events, Listeners, Controllers, FormRequests, Routes, and Vue pages.

Remove a domain:

```
php artisan remove:sk-domain Product
```

Architecture
------------

[](#architecture)

### Package Structure

[](#package-structure)

```
lvntr/starter-kit/
├── src/                          # Core package code (never published)
│   ├── StarterKitServiceProvider.php
│   ├── Console/Commands/         # sk:install, sk:update, make:sk-domain, etc.
│   ├── Domain/Shared/            # BaseAction, BaseDTO, ActionPipeline
│   ├── Enums/                    # PermissionEnum, HasDefinition, EnumRegistry
│   ├── Http/Middleware/          # CheckResourcePermission, SecurityHeaders
│   ├── Http/Responses/           # ApiResponse builder
│   ├── Traits/                   # HasActivityLogging, HasEnumAccessors, HasMediaCollections
│   └── helpers.php               # to_api(), format_date()
├── resources/
│   ├── js/components/            # Vue components (optionally publishable)
│   └── lang/                     # Translation files (optionally publishable)
├── stubs/                        # Published to app on install
│   ├── app/                      # Controllers, Models, Domain, Providers, Enums
│   ├── config/                   # permission-resources.php, settings.php
│   ├── database/                 # Migrations, Seeders, Factories
│   ├── routes/                   # Web & API routes
│   ├── resources/js/             # Vue pages, Layouts, Composables, Theme
│   └── bootstrap/                # app.php, providers.php
└── config/
    └── starter-kit.php           # Package configuration

```

### Application Structure (after install)

[](#application-structure-after-install)

```
app/
├── Domain/                       # DDD business logic
│   ├── User/                     # Actions, DTOs, Queries, Events, Listeners
│   ├── Role/
│   ├── Auth/
│   ├── Setting/
│   ├── ActivityLog/
│   └── Shared/                   # Base classes (updated by package)
├── Http/
│   ├── Controllers/Admin/        # Admin panel controllers
│   ├── Controllers/Api/          # REST API controllers
│   └── Middleware/
├── Models/
├── Enums/
└── Providers/

```

### Update Strategy

[](#update-strategy)

File CategoryBehavior on `sk:update``Domain/Shared/`, Traits, Middleware, helpersAlways updatedControllers, Models, Pages, RoutesUpdated only if user hasn't modified themUser's custom domainsNever touchedNew files from packageAutomatically addedUsing Package Components
------------------------

[](#using-package-components)

### Vue Components (without publishing)

[](#vue-components-without-publishing)

Components are auto-resolved from the package. Use them in your Vue files:

```

```

### Translations

[](#translations)

```
// From package namespace
__('starter-kit::admin.menu.dashboard')
__('starter-kit::message.created')
```

### Base Classes

[](#base-classes)

```
use Lvntr\StarterKit\Domain\Shared\Actions\BaseAction;
use Lvntr\StarterKit\Domain\Shared\DTOs\BaseDTO;
use Lvntr\StarterKit\Enums\PermissionEnum;
use Lvntr\StarterKit\Traits\HasActivityLogging;
```

License
-------

[](#license)

MIT

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance100

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

23

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/64ca451a6f47fe8526f3cbd3386ce81f6c63a97d7bb499dad39c29cea9bfb9f4?d=identicon)[lvntrdev](/maintainers/lvntrdev)

---

Tags

laravelinertiadddstarter-kitvueadmin-panelprimevue

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/lvntr-starter-kit/health.svg)

```
[![Health](https://phpackages.com/badges/lvntr-starter-kit/health.svg)](https://phpackages.com/packages/lvntr-starter-kit)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
