- Notifications
You must be signed in to change notification settings - Fork57
Laravel and Nuxt.js boilerplate designed for development with maximum API performance, ready-made authorization methods, image uploading with optimization, user roles, device management
License
k2so-dev/laravel-nuxt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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.
- Laravel 12 andNuxt 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 withSSR andCSR
- Laravel Socialite OAuth providers
- Laravel Sail Light-weight command-line interface for interacting with Laravel's default Docker development environment.
- Spatie Laravel Permissions This package allows you to manage user permissions and roles in a database.
- UI libraryNuxt UI 3 based onTailwindCSS 4 andReka UI.
- 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.
- Device management
- Enhanced Fetch Wrappers : Utilizes
$http
anduseHttp
, which extend the capabilities ofNuxt's standard$fetch
anduseFetch
.
- PHP 8.3+ / Node 20+
- Redis is required for theThrottling with Redis feature
- Laravel Octane supports 3 operating modes: Swoole (php extension), Roadrunner and FrankenPHP
composer install && bun install
cp .env.example .env && php artisan key:generate && php artisan storage:link
php artisan migrate && php artisan db:seed
php artisan octane:install
php artisan octane:start --watch --port=8000 --host=127.0.0.1
bun dev
Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.
At its heart, Sail is thedocker-compose.yml
file and thesail
script that is stored at the root of your project. The sail script provides a CLI with convenient methods for interacting with the Docker containers defined by the docker-compose.yml file.
Laravel Sail is supported on macOS, Linux, and Windows (viaWSL2).
- Installing Composer Dependencies
docker run --rm \ -u"$(id -u):$(id -g)" \ -v"$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php84-composer:latest \ composer install --ignore-platform-reqs
- Configuring A Shell Alias (Optional)
alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'
To make sure this is always available, you may add this to your shell configuration file in your home directory, such as ~/.zshrc or ~/.bashrc, and then restart your shell.
sail up
sail bun install
sail bun dev
Read the fullLaravel Sail documentation to get the best user experience
Standalone:
npx nuxi upgradecomposer update
Sail:
sail npx nuxi upgradesail composer update
To integrate with the API, enhanced$http
anduseHttp
wrappers are used, expanding the functionality of Nuxt's standard$fetch
anduseFetch
. The$http
wrapper includes custom interceptors to replace the originals:
onFetch
instead ofonRequest
onFetchError
instead ofonRequestError
onFetchResponse
instead ofonResponse
onFetchResponseError
instead ofonResponseError
Additionally,$http
predefines a base url, authorization headers, and proxy IP for convenient API work in SSR mode.For example, the code for authorizing a user by email and password:
<script lang="ts" setup>const nuxtApp=useNuxtApp();const router=useRouter();const auth=useAuthStore();const form=templateRef("form");const state=reactive({ email:"", password:"", remember:false,});const {refresh: onSubmit, status }=useHttp("login", { method:"POST", body:state, immediate:false, watch:false,async onFetchResponse({response }) {if (response?.status===422) {form.value.setErrors(response._data?.errors); }elseif (response._data?.ok) {nuxtApp.$token.value=response._data.token;awaitauth.fetchUser();awaitrouter.push("/"); } }});const loading=computed(()=>status.value==="pending");</script><template> <UFormref="form":state="state"@submit="onSubmit"class="space-y-4"> <UFormFieldlabel="Email"name="email"required> <UInputv-model="state.email"placeholder="you@example.com"icon="i-heroicons-envelope"trailingtype="email"autofocus /> </UFormField> <UFormFieldlabel="Password"name="password"required> <UInputv-model="state.password"class="w-full"type="password" /> </UFormField> <UTooltip:delay-duration="0"text="for 1 month":content="{ side: 'right' }"> <UCheckboxv-model="state.remember"class="w-full"label="Remember me" /> </UTooltip> <divclass="flex items-center justify-end space-x-4"> <NuxtLinkclass="text-sm"to="/auth/forgot">Forgot your password?</NuxtLink> <UButtontype="submit"label="Login":loading="loading" /> </div> </UForm></template>
In this example, a POST request will be made to the url"/api/v1/login"
useAuthStore() has everything you need to work with authorization.
Data returned byuseAuthStore:
logged
: Boolean, whether the user is authorizeduser
: User object, user stored in pinia storelogout
: Function, remove local data and call API to remove tokenfetchUser
: Function, fetch user datahasRole
: Function, checks the role
The following middleware is supported:
guest
: unauthorized usersauth
: authorized usersverified
: users who have confirmed their emailrole-user
: users with the 'user' rolerole-admin
: users with the 'admin' role
All built-in middleware from Laravel + middleware based on rolesSpatie Laravel Permissions Middleware
demo.mov
About
Laravel and Nuxt.js boilerplate designed for development with maximum API performance, ready-made authorization methods, image uploading with optimization, user roles, device management
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.