CARVIEW |
Develop web and mobile apps from the same codebase.
Develop web and mobile apps from the same codebase.

Maintaining multiple codebases sucks.
Hi, I am Dan Pastori, a certified Laravel developer who was frustrated with writing a beautiful web app only to realize I had to rewrite the app again if I wanted it on my mobile phone.
I've been making web and mobile applications with my friend Jay Rogers for the last 10 years. Jay helps with the design, but I am the only developer.
Working on a two-person team can be challenging when you cannot throw another person at the problem.
Supporting three separate codebases for web, iOS and Android is overwhelming.
Instead of hiring someone, we discovered a handful of tools that allow us to create web and mobile applications from the same codebase. Best of all, everything communicates back to a single API.
We're now able to deliver and maintain apps faster than ever before.
Don't just take our word for it...
"This book does a tremendous job of explaining the ins and outs of modern development with an eye on clarity and simplicity. And now, if you'll excuse me, I have a TON of refactoring to do on my app!"
This isn't just a book.
It's everything you need to start building more with less code.
500+ page eBook
Everything is organized in easy to consume chapters with a ton of code examples.
The book is available in PDF, EPUB, and MOBI formats so you can follow along no matter what device you choose. We give you the perfect amount of knowledge you need to know.

Instant source code repository access
Don't just guess how the code works, see it all in action β in realtime. You'll even be able to see how we run things on our production branch.
Private Community Access
Don't learn by yourself. Get instant access to an online community.
Have your questions answered by the community and meet others who are on the same journey as you.

In-depth video tutorials
Sometimes reading just isn't enough. We created over 10 video tutorials that show you how to set up your development environment, configure your routes, and more.
Learn from an app that's actually running in production
This isn't another βTo-Do Listβ app. We created an app called ROAST that has many different user permissions levels. This app has real-world problems, with real-world solutions.

Optimized Sketch & Figma templates for Capacitor
Designing icons for mobile apps should not be difficult.
These templates are specifically optimized for Capacitor and will save you hours from fighting the nitpicky requirements for app icons and splash screens. You'll be able to export your graphics in minutes.
Here's what's inside...
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
This is for you if...
π© You feel overwhelmed trying to support web and mobile apps
π You don't know where to get started with an API-driven application
π You are concerned about SPA + API authentication and security
π You want to learn concepts from an app that you can actually use
This isn't for you if...
β This is the first app you are trying to build
β Your app does not need to run in the web and also on native mobile
β You have no interest in learning concepts from Laravel or Vue.js
β You're trying to build a 3D game
Get the book and more
Choose the package right for you.
The Essentials


BOTH Editions of the 500+ page book (for Nuxt 2 and Nuxt 3)
Sketch & Figma icon templates optimized for Capacitor
Lifetime access & updates
The Complete Package



BOTH Editions of the 500+ page book (for Nuxt 2 and Nuxt 3)
Production source code access to an app called ROAST
Private forum access where you can meet & get help from others
In-depth video tutorials
Sketch & Figma icon templates optimized for Capacitor
Lifetime access & updates
Frequently asked questions
How long do I have to wait to get my forum and source code access?
You'll get instant access after your purchase. Here's how it works.
What formats are the files in?
Book: PDF, MOBI, EPUB
Videos: MP4
Are physical copies available?
The book is only available in digital form (ePub, MOBI, and PDF).
Can I get an invoice?
After your purchase, Lemon Squeezy will email a receipt with where you can click "generate an invoice".
Can I upgrade from the "Essentials" to the "Complete Package"?
Yes! You can do this at anytime. Click here to instantly upgrade and you'll only pay the difference of the packages.
I originally purchased the content with Gumroad. How do I access the new content?
Follow our migration guide on how to access our content on Lemon Squeezy.
Is the book available in multiple languages?
The book is available in English, but you can use Google Docs to translate the PDF into your native language.
How can I contact you?
Just shoot us an email at [email protected]