Skip to content
/ laravel-nuxt Public template
forked from k2so-dev/laravel-nuxt

Boilerplate is designed for Laravel and Nuxt development with maximum API performance ready-made authorization methods, image uploading with optimization and ready-made user roles.

License

Notifications You must be signed in to change notification settings

mangz007/laravel-nuxt

 
 

Repository files navigation

Laravel Nuxt Boilerplate

FOSSA Status GitHub Workflow Status CodeQL

The goal of the project is to create a template for development on Laravel and Nuxt with maximum API performance, ready-made authorization methods, image uploading with optimization and ready-made user roles.

Features

  • Laravel 10 and Nuxt 3
  • Laravel Octane supercharges your application's performance by serving your application using high-powered application servers.
  • Laravel Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps, and more.
  • Laravel Sanctum Token-based authorization is compatible with SSR and CSR
  • Laravel Socialite OAuth providers
  • Spatie Laravel Permissions This package allows you to manage user permissions and roles in a database.
  • UI library Nuxt UI based on TailwindCSS and HeadlessUI.
  • Pinia The intuitive store for Vue.js
  • Integrated pages: login, registration, password recovery, email confirmation, account information update, password change.
  • Temporary uploads with cropping and optimization of images.
  • ofetch preset for working with Laravel API, which makes it possible use $fetch without having to resort to custom $fetch wrappers.

Requirements

Installation

  1. clone repository
  2. composer install
  3. cp .env.example .env && php artisan key:generate && php artisan storage:link
  4. php artisan migrate
  5. php artisan db:seed
  6. php artisan octane:install
  7. php artisan octane:start --watch --port=8000 --host=127.0.0.1
  8. yarn install
  9. yarn dev

Nuxt port is set in package.json scripts via cross-env

Usage

Nuxt $fetch

To work with the api, the default path is "/api/v1". All requests from Nuxt to the Laravel API can be executed without wrappers, as described in the Nuxt.js documentation. For example, the code for authorizing a user by email and password:

const auth = useAuthStore();

const state = reactive({
  email: "",
  password: "",
});

const { data } = await useFetch("login", {
  method: "POST",
  body: state,
  watch: false,
});

if (data.value?.ok) {
  auth.token = data.value.token;
  await auth.fetchUser();
  await router.push("/");
}

In this example, a POST request will be made to the url "/api/v1/login"

Authentication

useAuthStore() has everything you need to work with authorization.

Data returned by useAuthStore:

  • logged: Boolean, whether the user is authorized
  • token: Cookie, sanctum token
  • user: User object, user stored in pinia store
  • logout: Function, remove local data and call API to remove token
  • fetchUser: Function, fetch user data

Nuxt Middleware

The following middleware is supported:

  • guest: unauthorized users
  • auth: authorized users
  • verified: users who have confirmed their email
  • role-user: users with the 'user' role
  • role-admin: users with the 'admin' role

Laravel Middleware

All built-in middleware from Laravel + middleware based on roles Spatie Laravel Permissions Middleware

Examples

Route list

Demo

demo.mov

Links

License

FOSSA Status

About

Boilerplate is designed for Laravel and Nuxt development with maximum API performance ready-made authorization methods, image uploading with optimization and ready-made user roles.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 80.4%
  • Vue 15.0%
  • TypeScript 4.2%
  • Other 0.4%