myra/starter-kit

A production-ready Laravel + Inertia.js + Vue 3 admin dashboard with user management, roles & permissions, media manager, email system, backups, and more.

Maintainers

Package info

github.com/spideyrex/myra-starter-kit

Language:Vue

Type:project

pkg:composer/myra/starter-kit

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.5 2026-03-23 12:41 UTC

This package is auto-updated.

Last update: 2026-06-08 09:07:51 UTC


README

A production-ready Laravel 12 + Inertia.js + Vue 3 admin dashboard starter kit with a Filament-style code generator, role-based access control, per-user data isolation, a built-in CMS, an AI writing assistant, and 55+ UI components โ€” so you can ship admin panels with very little hand-written code.

Tests Laravel Vue TypeScript Tailwind License

Myra dashboard

Table of Contents

Highlights

  • ๐Ÿ› ๏ธ Filament-style generators โ€” scaffold pages, full CRUD resources, or pages cloned from any of 18 feature demos, with routes, sidebar nav, and permissions auto-wired.
  • ๐Ÿ” Shield RBAC โ€” convention-based {module}.{ability} permissions synced from config, with a super-admin bypass and an editable permission matrix.
  • ๐Ÿ‘ค Per-user data isolation โ€” non-super-admins see only their own records; super-admins see everything.
  • ๐Ÿ“ CMS โ€” articles, pages, and categories with a Tiptap editor, server-side HTML sanitization, draft/publish workflow, and public blog.
  • ๐Ÿค– AI assistant โ€” bring-your-own-key writing assistant (OpenAI, Anthropic, OpenRouter, or self-hosted Ollama) streamed into the rich text editor.
  • ๐Ÿงฑ Schema-driven forms & tables โ€” declarative builders with 20+ field types, inline editing, filters, grouping, and reordering.
  • ๐ŸŒ i18n, ๐ŸŽจ 10 theme presets + dark mode, ๐Ÿ”” in-app + Firebase push notifications, and two-factor auth enforced after login.

Screenshots

Dashboard (light) Dashboard (dark)
Dashboard Dashboard dark
User management Roles & permission matrix
Users Roles
Articles (CMS) Media manager
Articles Media
Appearance / theme settings AI settings
Appearance AI settings
Security (2FA & sessions) Public homepage
Security Homepage
Feature demos Form builder demo
Demos Form builder

50+ full screenshots (every module + all 18 demos) live in public/docs/screenshots/ and the bundled documentation.

Scaffolding CLI

Generate admin modules from the terminal โ€” routes, sidebar nav, and Spatie permissions are wired automatically (idempotent markers; pass --print to emit snippets instead of editing files).

# Single page (controller + Vue page) + view permission + route + nav
php artisan make:myra-page Analytics

# Full CRUD resource (controller, service, 3 Vue pages) + 4 permissions + 6 routes
php artisan make:myra-resource Product --model

# Clone any Feature Demo into a runnable page โ€” e.g. a Student page from the form builder
php artisan make:myra-component Student form-builder

Component keywords (clone the matching demo): form-builder, rich-text-editor, repeater-field, conditional-fields, wizard, field-types, global-search, data-table, bulk-actions, advanced-filters, inline-editing, grouping, import-export, action-modals, soft-deletes, infolist, relation-manager, widgets, reordering.

Newly generated permissions appear in the Roles matrix immediately, so a super-admin can grant a new page to any role with one click.

Other commands:

php artisan app:install        # migrations, seeders, shield:generate, interactive admin
php artisan shield:generate    # sync {module}.{ability} permissions from config/shield.php
php artisan content:sanitize   # backfill-sanitize existing stored HTML (--dry-run to preview)

Security & Access Control

  • Two-factor authentication enforced after login โ€” 2FA users must pass the TOTP/recovery challenge before reaching any protected route (middleware-gated, throttled).
  • Account state enforcement โ€” suspended/pending users cannot log in and are logged out mid-session.
  • Shield RBAC โ€” permissions declared in config/shield.php; super-admin bypasses all checks via Gate::before.
  • Role assignment guards โ€” only super-admins can assign admin/super-admin; disabled roles are unassignable; the same rules apply to CSV import.
  • Role protections โ€” super-admins/admins are hidden from lower roles, admins can't manage other admins, and roles have super-admin-controlled active/visible toggles.
  • Per-user data isolation โ€” OwnedByUser global scope on content models; media scoped to the uploader; public pages explicitly exempt.
  • Hardening โ€” server-side HTML sanitization (defense-in-depth with client DOMPurify), SVG uploads blocked, CSV formula-injection escaping, whitelisted sort columns + capped pagination, Content-Security-Policy + HSTS in production, and a production-safe seeder.
  • Editable login tagline + server-enforced sign-up toggle.

Features

Core

  • User Management โ€” CRUD, soft deletes, status management, role assignment, impersonation, bulk actions, CSV export
  • Roles & Permissions โ€” Spatie RBAC with permission matrix, role cloning, active/visible toggles, grouped permissions
  • Dashboard โ€” stats, user-growth charts, activity feed, role/status breakdowns, configurable widgets
  • Activity Log โ€” full audit trail with CSV export
  • Media Manager โ€” uploads via Spatie Media Library, scoped per uploader
  • System Health โ€” database, cache, disk, and environment checks
  • Backups โ€” on-demand DB + file backups (Spatie Backup)
  • API Tokens โ€” Laravel Sanctum token creation/revocation

Content

  • Articles, Pages, Categories โ€” Tiptap rich text, featured images, SEO meta, draft โ†’ published โ†’ archived workflow, public blog at /blog
  • Homepage Builder โ€” configurable hero, features, testimonials, pricing, CTA, navbar, and footer

Communication

  • Email Templates โ€” database-driven with variable substitution + test sends
  • Email Log โ€” audit trail with export
  • Push Notifications โ€” Firebase Cloud Messaging (web push)
  • In-App Notifications โ€” real-time bell with read/unread tracking and per-user preferences

Developer Experience

  • Scaffolding CLI, Command Palette (Cmd/Ctrl+K), 20+ interactive feature demos, full TypeScript coverage, XLSX/CSV export, image editor, and schema-driven form/table/infolist/widget builders

Tech Stack

Layer Technology
Backend Laravel 12, PHP 8.4
Frontend Vue 3.5 (TypeScript), Inertia.js 2
Styling Tailwind CSS 4.2 (oklch)
UI shadcn-vue, Reka UI, Lucide icons
Tables TanStack Vue Table
Rich Text Tiptap
Charts Chart.js via vue-chartjs
Maps MapLibre GL (shadcn-vue wrappers)
Forms Vee-Validate + Zod
Auth / RBAC Sanctum, Google2FA, Spatie Permission
Media / Settings / Backups / Health / Activity Spatie packages
AI OpenAI ยท Anthropic ยท OpenRouter ยท Ollama
Push / Real-time Firebase Cloud Messaging (Kreait), Laravel Echo + Pusher
i18n vue-i18n (en, ms, zh)
Build Vite 7

Requirements

  • PHP 8.4+
  • Node.js 18+
  • MySQL / PostgreSQL / SQLite
  • Composer 2+

Installation

Clone the repository and install dependencies โ€” everything needed is committed, so it installs with no private access or tokens:

# 1. Get the code
git clone https://github.com/spideyrex/myra-starter-kit.git my-app
cd my-app

# 2. PHP + JS dependencies
composer install
npm install

# 3. Environment
cp .env.example .env
php artisan key:generate

# 4. Configure your database in .env (MySQL/PostgreSQL/SQLite), then run setup
#    (migrations + seeders + shield:generate + interactive admin account)
php artisan app:install

# 5. Run it (Laravel server + Vite dev server + queue worker + log viewer)
composer dev

Visit http://localhost:8000 and sign in with the admin account you created in step 4.

Quickest start (SQLite, zero DB config): set DB_CONNECTION=sqlite in .env, run touch database/database.sqlite, then php artisan app:install.

For production, build assets instead of composer dev: npm run build, and set APP_ENV=production, APP_DEBUG=false, SESSION_ENCRYPT=true, SESSION_SECURE_COOKIE=true in .env.

Default Roles

The seeder creates five roles:

Role Access
super-admin Full access (bypasses all checks via Gate::before)
admin All permissions
manager Users, content, email, media, notifications (no system settings)
editor Content + media (create/edit)
viewer Read-only

44 permissions across 17 modules are grouped by prefix (users, roles, pages, articles, โ€ฆ) in the permission matrix. Generated modules add their own automatically.

AI Assistant

Configure a provider under Settings โ†’ AI (master toggle, provider, API key, model, base URL, temperature, max tokens):

Provider Default model Notes
OpenAI (default) gpt-4o-mini custom base URL supported
Anthropic claude-sonnet-4-5
OpenRouter openai/gpt-4o-mini any listed model
Ollama llama3.1 self-hosted, no key

The rich text editor gains a Sparkles menu: generate, improve, fix grammar, shorten, lengthen, summarize, and change tone โ€” streamed via Server-Sent Events.

Internationalization

vue-i18n with lazy-loaded locales (en, ms, zh) and a header language switcher. Add a locale by dropping a JSON file in resources/js/i18n/locales/ and registering it in resources/js/i18n/index.ts.

Theme System

10 shadcn color presets (Zinc, Slate, Stone, Red, Rose, Orange, Green, Blue, Violet, Yellow) selectable from Settings โ†’ Appearance, plus custom sidebar colors, logo/favicon upload, dark mode, and per-mode oklch values applied at runtime across admin and public pages.

Project Structure

app/
โ”œโ”€โ”€ Admin/Traits/            # SearchableQuery, ExportableQuery, HasSampleData
โ”œโ”€โ”€ Console/Commands/        # app:install, shield:generate, content:sanitize, Myra/ generators
โ”œโ”€โ”€ Http/
โ”‚   โ”œโ”€โ”€ Controllers/Admin/   # admin controllers
โ”‚   โ”œโ”€โ”€ Controllers/Auth/    # authentication
โ”‚   โ””โ”€โ”€ Middleware/           # Shield, 2FA, active-user, registration, security headers
โ”œโ”€โ”€ Models/                  # Eloquent models (+ Traits/OwnedByUser)
โ”œโ”€โ”€ Services/                # business logic (incl. Services/Ai)
โ”œโ”€โ”€ Settings/                # Spatie settings classes
โ””โ”€โ”€ Support/                 # HtmlSanitizer, Csv

config/                      # shield.php (RBAC map), myra.php (generator registry)
resources/js/
โ”œโ”€โ”€ Pages/Admin/             # admin modules + Demo/ (18 feature demos)
โ”œโ”€โ”€ Pages/{Auth,Public,Errors}/
โ”œโ”€โ”€ components/ui/           # 55+ shadcn-vue components
โ”œโ”€โ”€ composables/             # form/table/infolist/widget builders + helpers
โ””โ”€โ”€ i18n/locales/            # en, ms, zh
database/migrations ยท seeders
stubs/admin/                 # generator templates

Key URLs

URL Description
/ Public homepage
/blog, /blog/{slug} Public articles
/pages/{slug} Public static pages
/login, /register Auth
/dashboard Admin dashboard
/admin/users, /admin/roles User & role management
/admin/articles, /admin/pages, /admin/categories, /admin/media CMS & media
/admin/settings General, SEO, Appearance, Social, Maintenance, Homepage, AI
/admin/email-templates, /admin/email-logs, /admin/email-settings Email
/admin/firebase-settings, /admin/notifications Push & notifications
/admin/activity-logs, /admin/backups, /admin/system-health, /admin/api-tokens System
/admin/demo Feature demos
/docs Full documentation

Documentation

Comprehensive docs ship with the project at public/docs/index.html (served at /docs): the form/table builders, every artisan command, RBAC/Shield, data isolation, role protections, the notification system, and all admin modules โ€” with screenshots throughout.

License

MIT License. See LICENSE for details.