It's everything you need to start building more with less code.
Nuxt 3 + Laravel 10
Nuxt 2 + Laravel 9
Introduction
Understand what you'll be learning.
Preface
Why build an API?
Pre-Requisites
What We're Building
Why We Chose Laravel 10 and Nuxt 3
Configuring Laravel 10 as an API
Build a solid & flexible foundation for your app.
Configuring your development environment
Installing Laravel 10.x
Configure Laravel as an API Only with Laravel Breeze
Preparing your API for Automated Testing
On to the Frontend
Using Nuxt 3 for Web & Mobile
Learn how we will design our frontend using Nuxt 3
Installing and Configuring Nuxt 3
Understanding Nuxt 3's Structure
Installing Extra Packages (Optional)
Building your first Layout
Working with Pages
Using Laravel Sanctum for API Authentication
Prepare your Laravel API for secure authentication.
Laravel Sanctum Overview
Authentication Routes provided by Laravel Breeze
Set up API Versioning
Configuring our User Route
Laravel Passport vs Laravel Sanctum
Wrapping Up
Set Your Session Domain
Set Up Nuxt to Properly Authenticate with Your API
Securely connect Nuxt to Laravel.
Using Laravel Sanctum with Nuxt
Configuring Nuxt 3 Auth Module + Laravel Sanctum
Building Authentication & Registration Components
Handling Guest Users with Nuxt 3 Middleware
Implementing an Email Validation System for New Registrations
On to "Fun"-ctionality
The Full-Stack Feature Approach
Learn how to create a feature from start to finish.
Using the Proper Methods for API Requests
Building a Feature From Start to Finish
Managing App Resources Through an API
Learn how to design RESTful resources.
Efficiently Building API Endpoints
Using our API Endpoints with Nuxt 3
Accessing Resources With Human-Readable API Endpoints
Uploading Files
Handling "Parent - Child" Relationships
Implementing Many-To-Many Relationships
Using API Laravel Resources (Routes & Eloquent)
Permissions, Validations, and Security
Prevent users from accessing other parts of your app.
Permissions Overview
Preventing Unauthorized Access Using Middleware
Securing API Endpoints With Laravel Gates & Policies
Implementing Laravel's Custom Validation Rules
Securing Our Front-End With Nuxt Middleware
Handling Unauthorized Actions on the Front-End
Displaying API Errors to Your Users
Build iOS & Android Apps with CapacitorJS
Create two mobile apps in one command from the same codebase.
Installing and Configuring CapacitorJS
SSR vs SPA
Speeding up Builds with a Single Command
Token-Based Authentication with Laravel Sanctum
Using Native Phone Features In Your App
Deep-Linking: Open Your App From the Web
Implementing Social Logins
Allow users to sign in with their social profiles.
Installing & Configuring Laravel Socialite
Allowing logins from Facebook, Google, and Apple
Securely Exchanging Tokens With an oAuth Provider
Opening Your API to Others
Allow other developers to integrate with your app.
Configuring Laravel Sanctum for 3rd Party Access
Determining What API Endpoints should be available to 3rd Parties
Create Endpoints to Manage Tokens
Rate Limiting Requests
Nuxt Interface and Settings
Using a Personal Access Token
Scoping Access Tokens
Limiting Access
API Tips, Tricks, and Gotchas
Don't learn this the hard way.
RESTful Response Codes: How to Use Them
How Cross-Origin Resource Sharing (CORS) Works
Handling "Imperfect" RESTful Endpoints
Benefits of API Versioning
Tips & Tricks for Testing APIs
Configure Postman REST Client
Configure Insomnia REST Client
Securing Sensitive Data
Single-Page Application Tips, Tricks, and Gotchas
Prevent yourself from getting a headache.
When to Use Pinia
The Truth about SPA Security
Composables vs Mixins
Data Fetching Techniques
Helpful VueUse Methods
When to use EventBus vs $emits
Convert to Form Data composable
Additional Registration Security with ZXCVBN
Appendix
A few features we used along the way
Artisan Commands
Helpful Eloquent Relationships
Installing Laravel Telescope
Adding Gravatar as a Computed Eloquent Property
Introduction
Understand what you'll be learning.
Hello & Welcome
Pre-Requisites
What We're Building
Why We Chose Laravel and NuxtJS
Configuring Laravel as an API
Build a solid & flexible foundation for your app.
Configuring Your Development Environment
Installing Laravel 10.x
Setting Up Laravel to be an API
Preparing Your API for Automated Testing
Using NuxtJS for Web & Mobile
Learn how everything will begin in NuxtJS.
Installing and Configuring NuxtJS
Understanding NuxtJS' Structure
Abstracting Your API Calls Into Reusable Modules
Managing Events With the Event Bus
Saving Time With Mixins
Building Your First Layout
Using Laravel Sanctum for API Authentication
Prepare your Laravel API for secure authentication.
Building Secure Authentication API Endpoints
Implementing Cross-Origin Resource Sharing (CORS)
Laravel Sanctum vs. Laravel Passport
Installing and Configuring Laravel Sanctum
Implementing Authentication and Registration With Laravel Sanctum
Writing Authentication Tests
Set Up NuxtJS to Properly Authenticate With Your API
Securely connect NuxtJS to Laravel.
Configuring NuxtJS Auth Module + Laravel Sanctum
Building Authentication & Registration Components
Handling Guest Users With NuxtJS Middleware
Implementing an Email Validation System for New Registrations
The Full-Stack Feature Approach
Learn how to create a feature from start to finish.
Using the Proper Methods for API Requests
Building a Feature From Start to Finish
Managing App Resources Through an API
Learn how to design RESTful resources.
Efficiently Building API Endpoints for Data Queries
Using Our API Endpoints With NuxtJS
Accessing Resources With Human-Readable API Endpoints
Uploading Files
Implementing Many-To-Many Relationships
Handling "Parent-Child" Relationships
Permissions, Validations, and Security
Prevent users from accessing other parts of your app.
Preventing Unauthorized Access Using Middleware
Securing API Endpoints With Laravel Gates & Policies
Implementing Laravel's Custom Validation Rules
Securing Our Front-End With NuxtJS Middleware
Handling Unauthorized Actions on the Front-End
Displaying API Errors to Your Users
Build iOS & Android Apps for Capacitor
Create two mobile apps in one command from the same codebase.
Installing and Configuring Capacitor
Speeding Up Builds With A Single Command
Server-Side Rendering vs. Single-Page Application
Using Native Phone Features In Your App
Deep-Linking: Open Your App From The Web
Token-Based Authentication with Laravel Sanctum
Implementing Social Logins
Allow users to sign in with their social profiles.
Installing and Configuring Laravel Socialite
Allowing logins from Facebook, Google, and Twitter
Securely Exchanging Tokens Between an OAuth Provider and Your API
Opening Your API to Others
Allow other developers to integrate with your app.
Install and configure Laravel Passport for 3rd party access
Getting Laravel Passport and Laravel Sanctum to Work Together
Determining What API Endpoints Should Be Available to 3rd Parties
API Tips, Tricks, and Gotchas
Don't learn this the hard way.
Securing Sensitive Data
Configure Insomnia REST Client
Configure Postman REST Client
Tips & Tricks for Testing APIs
Handling "Imperfect" RESTful Routes
Benefits of API Versioning
RESTful Response Codes: How To Use Them
How Cross-Origin Resource Sharing (CORS) Works
Single-Page Application Tips, Tricks, and Gotchas
Prevent yourself from getting a headache.
The Truth About Spa Security
When to Use Vuex
Video Tutorials
Sometimes words just aren't enough.
Why Build an API + Spa?
Adding a Feature From Start to Finish
Using Postman With Laravel Sanctum
Testing your API with Postman
Using Insomnia as a REST client With Laravel Sanctum
Testing your API with Insomnia
Setting up Laravel Sanctum with NuxtJS for Web
Creating an iOS & Android App From The Same Codebase with Capacitor
Structuring a GET Request
Creating API Modules in NuxtJS
Customizing Mailables With Laravel
Validating Emails for New Registrations with a SPA + API
Isolating Features Based On The App (Web vs. Mobile App)