Laravel-Nuxt
A Laravel-Nuxt starter project template.
Features
- Nuxt 2
- Laravel 8
- SPA or SSR
- Socialite integration
- VueI18n + ESlint + Bootstrap 4 + Font Awesome 5
- Login, register, email verification and password reset
Installation
composer create-project --prefer-dist cretueusebiu/laravel-nuxt
- Edit
.env
and set your database connection details - (When installed via git clone or download, run
php artisan key:generate
andphp artisan jwt:secret
) php artisan migrate
npm install
Usage
Development
# start Laravel
php artisan serve
# start Nuxt
npm run dev
Access your application at http://localhost:3000
.
Production
npm run build
Enable SSR
- Edit
client/nuxt.config.js
and setssr: true
- Edit
.env
to setAPP_URL=http://api.example.com
andCLIENT_URL=http://example.com
- Run
npm run build
andnpm run start
Nginx Proxy
For Nginx you can add a proxy using the follwing location block:
server {
location / {
proxy_pass http://http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Process Manager
In production you need a process manager to keep the Node server alive forever:
# install pm2 process manager
npm install -g pm2
# startup script
pm2 startup
# start process
pm2 start npm --name "laravel-nuxt" -- run start
# save process list
pm2 save
# list all processes
pm2 l
After each deploy you'll need to restart the process:
pm2 restart laravel-nuxt
Make sure to read the Nuxt docs.
Socialite
This project comes with GitHub as an example for Laravel Socialite.
To enable the provider create a new GitHub application and use https://example.com/api/oauth/github/callback
as the Authorization callback URL.
Edit .env
and set GITHUB_CLIENT_ID
and GITHUB_CLIENT_SECRET
with the keys form your GitHub application.
For other providers you may need to set the appropriate keys in config/services.php
and redirect url in OAuthController.php
.
Email Verification
To enable email verification make sure that your App\User
model implements the Illuminate\Contracts\Auth\MustVerifyEmail
contract.
Notes
- This project uses router-module, so you have to add the routes manually in
client/router.js
. - If you want to separate this in two projects (client and server api), move
package.json
intoclient/
and remove config path option from the scripts section. Also make sure to add the env variables inclient/.env
.
Changelog
Please see CHANGELOG for more information what has changed recently.