PHPackages                             codeartlv/joona - 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. [Framework](/categories/framework)
4. /
5. codeartlv/joona

ActiveLibrary[Framework](/categories/framework)

codeartlv/joona
===============

A simple backend template for Laravel projects

1.31.1(2w ago)01.6k↑85.7%MITPHPPHP ^8.2

Since Apr 12Pushed 4w ago1 watchersCompare

[ Source](https://github.com/codeartlv/joona)[ Packagist](https://packagist.org/packages/codeartlv/joona)[ RSS](/packages/codeartlv-joona/feed)WikiDiscussions main Synced yesterday

READMEChangelogDependencies (8)Versions (214)Used By (0)

Joona
=====

[](#joona)

Joona is a Laravel admin panel package with user management, roles and permissions, activity logging, and a Bootstrap 5–based UI layer. Unlike opinionated admin builders, it does not force predefined CRUD screens—you build your own Blade views and routes while reusing layouts, form helpers, and JavaScript components.

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11.x (recommended for new projects; the package can be added to existing apps)
- Node.js and npm (for compiling your Vite assets)
- Composer

The package ships database migrations. If your application already has tables with the same names (`admin_users`, `roles`, etc.), resolve naming conflicts before migrating.

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

[](#installation)

### 1. Install the package

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

```
composer require codeartlv/joona
```

Laravel auto-discovers `Codeart\Joona\Providers\JoonaProvider`, which registers migrations and Artisan commands.

### 2. Publish assets and application provider

[](#2-publish-assets-and-application-provider)

```
php artisan joona:publish
```

This command:

- Runs `npm install` inside the package asset directory (`vendor/codeartlv/joona/resources/assets`)
- Publishes flag images to `public/vendor/joona`
- Publishes `config/joona.php`
- Publishes `app/Providers/JoonaServiceProvider.php` (extends `JoonaPanelProvider`)
- Registers `JoonaServiceProvider` in `bootstrap/providers.php` (Laravel 11+)

On Laravel 10 and below, add `App\Providers\JoonaServiceProvider::class` to `config/app.php` manually if it was not added automatically.

### 3. Run migrations and seed

[](#3-run-migrations-and-seed)

```
php artisan migrate
php artisan joona:seed
```

Default login (change immediately in production):

FieldValueURL`/admin`Email`admin@localhost`Password`password`The seeded password satisfies the default policy in `config/joona.php` (`min:8,max:20,mixed,number,special`). Stricter rules apply when users change passwords through the UI.

Frontend setup (Vite)
---------------------

[](#frontend-setup-vite)

Joona does not ship pre-built CSS/JS for your app. You compile your own entry files and point the panel at them via `addViteResources()`.

### SCSS entry

[](#scss-entry)

Create e.g. `resources/scss/admin.scss`:

```
/* Theme variables (Bootstrap overrides) */
@import '@joona/scss/config.scss';

/* Your overrides here */

/* Package styles (Bootstrap, components, vendors) */
@import '@joona/scss/main.scss';

/* Your custom styles */
```

### JavaScript entry

[](#javascript-entry)

Create e.g. `resources/js/admin.js`:

```
import Joona from '@joona/js/main.js';

// Optional: register custom handlers
// import Blog from './handlers/blog.js';
// Joona.addHandlers(Blog);

Joona.ready();
```

`main.js` exports the runtime singleton as `window.Joona`. Call `Joona.ready()` once to bind `data-bind` handlers, load translations, and initialize built-in components.

### Vite configuration

[](#vite-configuration)

```
// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import path from 'path';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/js/admin.js', 'resources/scss/admin.scss'],
            refresh: true,
        }),
    ],
    resolve: {
        alias: {
            '@joona': path.resolve(__dirname, 'vendor/codeartlv/joona/resources/assets'),
            '@joona-modules': path.resolve(__dirname, 'vendor/codeartlv/joona/resources/assets/node_modules'),
        },
    },
});
```

Run `npm install` in your Laravel project, then build:

```
npm run build
# or during development:
npm run dev
```

### Register Vite entries in the panel

[](#register-vite-entries-in-the-panel)

Edit `app/Providers/JoonaServiceProvider.php`:

```
