NuxtVueLaravelAdmin dashboardSaaSStarter

laravel-vue-starter-kit — Nuxt Admin dashboard Template

By reyes200205

A full-stack starter template based on a Laravel Headless REST API and a Nuxt 3 dashboard, using a monorepo structure with built-in Sanctum token authentication, email verification, password reset, API versioning, and automatic OpenAPI documentation. Suitable for building SaaS backends or admin panels.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

1 previews
Author preview
Author-provided preview

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Monorepo structure with frontend and backend separated into two subprojects: laravel-api-kit and nuxt-app-kit

02

Backend integrates Laravel Sanctum token authentication, email verification, and password reset flows

03

URI-based /api/v1 versioning with support for sunset and deprecation response headers

04

Uses Spatie Query Builder for URL parameter filtering, sorting, and relationship loading

05

Automatically generates OpenAPI 3.1 specifications and Swagger UI documentation via dedoc/scramble

06

Frontend provides a responsive dashboard, light and dark modes, a command palette, and keyboard shortcuts

Template Details

This template is a monorepo full-stack starter divided into two subprojects: laravel-api-kit provides the Laravel Headless REST API backend, and nuxt-app-kit provides the Nuxt 3 admin panel and dashboard frontend. The backend includes Sanctum token authentication, email verification, password reset, URI-based /api/v1 versioning, dynamic filtering, sorting, and relationship loading via Spatie Query Builder, DTO type constraints with Spatie Laravel Data, and automatic OpenAPI 3.1 and Swagger UI documentation generation via dedoc/scramble; tests use Pest PHP. The frontend is built on Nuxt 3 and Nuxt UI (TailwindCSS + HeadlessUI), offering a responsive dashboard with a collapsible sidebar, light and dark modes, a command palette, and keyboard shortcuts, with Renovate configured for automatic dependency updates. The frontend and backend are connected through environment variables: the backend sets SANCTUM_STATEFUL_DOMAINS to allow the frontend domain, and the frontend sets NUXT_PUBLIC_API_BASE to point to the backend API address.

Usage limitations: The project is MIT licensed, allowing free use, modification, commercial use, and distribution of this version of the code, but the copyright notice and license notice must be retained when distributing. Third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains, hosting, databases, payments, or AI may incur additional charges. Version information noted in the README, such as Laravel 13, Nuxt 3, PHP 8.3+, and Pnpm 9.x, comes from project badges and has not been checked item by item against the dependency manifest; actual versions are subject to the repository dependency files.

NuxtVueLaravelAdmin panelSaaSStarter

Is it right for your project?

Use Cases

  • Building the admin interface and API service for a SaaS product
  • Developing an admin panel that requires token authentication and email verification
  • Using as a full-stack project starting point to quickly connect a Laravel REST API with a Nuxt dashboard
  • Backend projects that need automatically generated OpenAPI documentation and a unified API response format

Suitable For

  • Full-stack developers familiar with Laravel and Nuxt/Vue
  • SaaS or admin project teams that need a frontend-backend separated architecture
  • Individuals or organizations that want to use and further develop it for free under the MIT license

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    The backend can use Docker (docker compose build/up) or a local PHP 8.3+ and Composer installation, then run key:generate and migrate

  2. 2

    The frontend requires pnpm install and pnpm dev to start, running by default at localhost:3000

  3. 3

    The backend .env must set SANCTUM_STATEFUL_DOMAINS to include the frontend address, and the frontend .env must set NUXT_PUBLIC_API_BASE to point to the backend /api/v1

  4. 4

    API documentation is by default at http://localhost:8080/docs/api, and the OpenAPI JSON is at /docs/api.json

  5. 5

    When distributing the code, retain the MIT license and the original author's copyright notice; third-party assets require separate license verification

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version in a public repository under the MIT license; the free scope is the code of this version and does not mean that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version of the code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • This template integrates third-party open-source projects (grazulex/laravel-api-kit and nuxt-ui-templates/dashboard); these upstream components retain their own original licenses and copyright notices, which must also be complied with when redistributing.
  • The backend code originates from grazulex/laravel-api-kit; its attribution and license information must be retained when using or redistributing it.
  • The frontend dashboard template originates from Nuxt's official nuxt-ui-templates/dashboard; the Nuxt team's attribution and corresponding license notices must be retained when redistributing.
  • Frontend-backend integration requires correctly configuring SANCTUM_STATEFUL_DOMAINS and NUXT_PUBLIC_API_BASE; otherwise cross-origin authenticated requests will be rejected. This is a deployment configuration requirement, not a code limitation.
  • API documentation and Swagger UI are by default only provided on local port 8080; production deployments must adjust the service address and port configuration themselves.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Special thanks to the original creators whose open-source repositories made this kit possible:

Original README

* **Laravel API Kit**: Developed by [grazulex](https://github.com/grazulex). Original Repository: [grazulex/laravel-api-kit](https://github.com/grazulex/laravel-api-kit).

Original README

* **Nuxt Dashboard Template**: Created by the [Nuxt Team](https://github.com/nuxt) as part of Nuxt UI templates. Original Repository: [nuxt-ui-templates/dashboard](https://github.com/nuxt-ui-templates/dashboard).

Original README

Ensure stateful Sanctum requests are allowed from your frontend URL:

Original README

* **Swagger UI**: [http://localhost:8080/docs/api](http://localhost:8080/docs/api)

Original README
https://github.com/reyes200205/laravel-vue-starter-kit/blob/main/LICENSEhttps://github.com/reyes200205/laravel-vue-starter-kit/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-04. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 76 / 100
Technologies
Nuxt · Vue · Laravel
Website type
Admin dashboard · SaaS · Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-08-27
Screenshot last checked
2026-10-04

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

The catalog identifies Nuxt as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: d6ad04ee5c6b38b699f0eec5e8b5da051c03bc858725d44fa99c779294f8e7bf

2026-10-04T02:40:01.968Z

Source file / repository
# Laravel Nuxt Starter Kit

[Leer en Español 🇪🇸](README.es.md)

[![Nuxt 3](https://img.shields.io/badge/Nuxt-3.x-00DC82?logo=nuxt&logoColor=white)](https://nuxt.com)
[![Laravel 13](https://img.shields.io/badge/Laravel-13.x-FF2D20?logo=laravel&logoColor=white)](https://laravel.com)
[![PHP 8.3+](https://img.shields.io/badge/PHP-8.3%2B-777BB4?logo=php&logoColor=white)](https://php.net)
[![Pnpm](https://img.shields.io/badge/Pnpm-9.x-F69220?logo=pnpm&logoColor=white)](https://pnpm.io)
[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)

A production-ready full-stack boilerplate integrating a **Laravel 13 Headless REST API** backend with a modern **Nuxt 3 Dashboard** frontend. This starter kit provides a pre-configured architecture ideal for SaaS applications, admin panels, or complex web platforms.

---

## 📸 Screenshots

**Login**
![Login](.github/screenshots/login.png)

**Dashboard (Light)**
![Dashboard Light](.github/screenshots/dashboard-ligth.png)

**Dashboard (Dark)**
![Dashboard Dark](.github/screenshots/dashboard-black.png)

---

## Project Structure

This project is organized as a simple monorepo containing the following components:

```text
laravel-nuxt-starter-kit/
├── laravel-api-kit/     # Backend - Laravel 13 REST API (Headless Service)
└── nuxt-app-kit/        # Frontend - Nuxt 3 Admin Panel & Dashboard
```

---

## 🖥️ Frontend Features (Nuxt App Kit)

* **Nuxt 3 & Nuxt UI**: Modern user interface library powered by TailwindCSS and HeadlessUI elements.
* **Responsive Dashboard**: Collapsible sidebar, multi-column navigation, and optimized layouts.
* **Light/Dark Mode**: Built-in native support for color schemes.
* **Command Palette & Shortcuts**: Quick accessibility tools and keyboard navigation out-of-the-box.
* **Renovate Integration**: Configured for automated dependency updates.

---

## ⚙️ Backend Features (Laravel API Kit)

* **Strict Mode & Type Safety**: Enabled `declare(strict_types=1)`, `final` classes, type-hinting, strict equality, and PHPStan (Max Level).
* **Token Authentication**: Secure authentication via Laravel Sanctum.
* **Email Verification**: Built-in verification flow with signed URLs sent via email.
* **Password Reset**: Secure token-based password recovery.
* **API Versioning**: URI-based versioning (`/api/v1`) using `grazulex/laravel-apiroute` with sunset and deprecation header support.
* **Query Builder**: Dynamic filtering, sorting, and relationship loading using `spatie/laravel-query-builder`.
* **Data Transfer Objects (DTOs)**: Enforced type-safe API inputs/outputs via `spatie/laravel-data`.
* **Auto-Documentation**: Zero-annotation OpenAPI 3.1 schema and Swagger UI generation via `dedoc/scramble`.
* **Testing Suite**: Pest PHP configured for high-speed HTTP and unit testing.

---

## Setup & Installation

### 1. Backend Setup (`laravel-api-kit`)

Navigate to the backend directory:
```bash
cd laravel-api-kit
```

#### Option A: Docker (Recommended)
```bash
# Copy environment file
cp .env.example .env

# Build and start containers in the background
docker compose build
docker compose up -d

# Install Composer dependencies
docker compose run --rm app composer install

# Generate application key
docker compose run --rm app php artisan key:generate

# Run migrations
docker compose run --rm app php artisan migrate

# Verify installation with tests
docker compose run --rm app ./vendor/bin/pest
```

#### Option B: Local Setup (Without Docker)
Ensure you have PHP 8.3+ and Composer installed.
```bash
# Install dependencies
composer install

# Configure environment
cp .env.example .env
php artisan key:generate

# Setup local SQLite database
touch database/database.sqlite
php artisan migrate

# Run tests
./vendor/bin/pest

# Start local server
php artisan serve
```

Once running, access the auto-generated documentation:
* **Swagger UI**: [http://localhost:8080/docs/api](http://localhost:8080/docs/api)
* **OpenAPI Spec JSON**: [http://localhost:8080/docs/api.json](http://localhost:8080/docs/api.json)

---

### 2. Frontend Setup (`nuxt-app-kit`)

Navigate to the frontend directory:
```bash
cd ../nuxt-app-kit
```

```bash
# Copy environment variables
cp .env.example .env

# Install dependencies using pnpm
pnpm install

# Start the Nuxt development server
pnpm dev
```

Nuxt will be running locally at [http://localhost:3000](http://localhost:3000).

---

## Connecting Frontend & Backend

To sync the Nuxt frontend with the Laravel API, verify the cross-origin settings:

### Backend configuration (`laravel-api-kit/.env`)
Ensure stateful Sanctum requests are allowed from your frontend URL:
```env
SANCTUM_STATEFUL_DOMAINS=localhost:3000,127.0.0.1:3000
```

### Frontend configuration (`nuxt-app-kit/.env`)
Configure Nuxt's public base API URL to point to the Laravel endpoint:
```env
NUXT_PUBLIC_API_BASE=http://localhost:8080/api/v1
```

---

## Deep Dive: Backend Architecture & Usage

### API Endpoints (v1)

| Method | Endpoint | Auth | Description | Rate Limit |
|--------|----------|------|-------------|------------|
| `POST` | `/register` | No | Registers a new user account | 5 / min |
| `POST` | `/login` | No | Performs authentication and returns token | 5 / min |
| `POST` | `/logout` | Yes | Revokes current API token | 120 / min |
| `GET`  | `/me` | Yes | Retrieves authenticated user profile | 120 / min |
| `POST` | `/email/verify/{id}/{hash}` | Yes | Verifies user's email address | 120 / min |
| `POST` | `/email/resend` | Yes | Resends a verification email link | 6 / min |
| `POST` | `/forgot-password` | No | Sends password recovery email | 6 / min |
| `POST` | `/reset-password` | No | Updates password using recovery token | 6 / min |

### API Response Format

All responses from the Laravel API return a uniform JSON template:

* **Success (HTTP 200/201):**
  ```json
  {
    "success": true,
    "message": "Operation successful",
    "data": {
      "user": {
        "id": 1,
        "name": "John Doe",
        "email": "[email protected]"
      }
    }
  }
  ```
* **Validation / Client Error (HTTP 422/400):**
  ```json
  {
    "success": false,
    "message": "The given data was invalid.",
    "errors": {
      "email": [
        "The email field must be a valid email address."
      ]
    }
  }
  ```

### Advanced Query Building

Using the Spatie Query Builder, you can filter, sort, and lazy-load relationships directly through URL parameters:

```php
// In a controller
$users = QueryBuilder::for(User::class)
    ->allowedFilters(['name', 'email'])
    ->allowedSorts(['name', 'created_at'])
    ->allowedIncludes(['posts'])
    ->paginate();
```

* **Filter by name:** `/api/v1/users?filter[name]=John`
* **Sort by creation date descending:** `/api/v1/users?sort=-created_at`
* **Include relationship data:** `/api/v1/users?include=posts`

### Rate Limiting

The application uses standard rate limiting rules configured in `AppServiceProvider.php`:
* `auth`: 5 requests per minute for login/register.
* `authenticated`: 120 requests per minute for logged-in sessions.
* `api`: 60 requests per minute for public endpoints.

---

## Development Commands

### Laravel API:
* **Lint codebase (Rector + Pint):** `composer lint` (Docker: `docker compose exec app composer lint`)
* **Static analysis & unit tests:** `composer test` (Docker: `docker compose exec app composer test`)
* **Reset Database:** `php artisan migrate:fresh --seed`

### Nuxt Frontend:
* **Production Build:** `pnpm build`
* **Preview production locally:** `pnpm preview`

---

## Credits

Special thanks to the original creators whose open-source repositories made this kit possible:

* **Laravel API Kit**: Developed by [grazulex](https://github.com/grazulex). Original Repository: [grazulex/laravel-api-kit](https://github.com/grazulex/laravel-api-kit).
* **Nuxt Dashboard Template**: Created by the [Nuxt Team](https://github.com/nuxt) as part of Nuxt UI templates. Original Repository: [nuxt-ui-templates/dashboard](https://github.com/nuxt-ui-templates/dashboard).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.