A Laravel + Socialite + Vite + Vue 3 + TailwindCSS SPA Boilerplate. Laravel with user authentication, registration with email verification, social media authentication, password recovery, user management, and roles/permissions management. Uses official TailwindCSS. While the front end is part of this repository it is a completely separated Vue 3 front end compiled using ViteJS.
- Laravel 11.x
- Laravel Sanctum
- Socialite
- Vite
- Vue 3
- TailwindCSS (w/
@tailwindcss/forms
and@tailwindcss/aspect-ratio
) - Vue Router
- Pinia
- Axios
- Vue I18n
- Headless UI
- Heroicons
- Font Awesome 6
- ESLint with Prettier
- Users Area
- Admin Area
- About Page
- Terms Page
- Users Managemenet
- User Impersonation
- User Data Download
- User Account Self Deletion.
- Manage Social Media Logins through GUI
- Roles Management
- Permissions Management
- Google Analytics (optional)
- Social Authentication with Facebook, Twitter, Instagram, GitHub, TikTok, Google, YouTube, Microsoft, Twitch, and Apple
- Optional Sentry.io Laravel Monitoring
- Optional Sentry.io VueJs Monitoring
The following Sanctum features are implemented in this Vue SPA:
- ✅ Laravel 11
- ✅ Vue 3
- ✅ VueRouter
- ✅ Pinia
- ✅ Vue I18n Multi-Language
- ✅ Login
- ✅ Password Reset
- ✅ Registration
- ✅ Admin Panel
- ✅ Profile Management
- ✅ User Management
- ✅ Roles Management
- ✅ Permissions Management
- ✅ Password Change
- ✅ E-Mail Verification
- ✅ Posts Management
- ✅ Frontend Blog
- ✅ TailwindCSS
- ✅ Browser Sessions - Other Device Logout
- ✅ User Activity Logs
- Run
git clone https://github.com/jeremykenedy/laravel-spa.git laravel-spa
- Create a MySQL database for the project
mysql -u root -p
, if using Vagrant:mysql -u homestead -psecret
create database laravelSpa;
\q
- From the projects root run
cp .env.example .env
- Configure your
.env
file (VERY IMPORTANT) - Run
composer install
from the projects root folder - From the projects root folder run
sudo chmod -R 755 ../laravel-spa
- From the projects root folder run
php artisan key:generate
- From the projects root folder run
php artisan migrate
- From the projects root folder run
composer dump-autoload
- From the projects root folder run
php artisan db:seed
- Compile the front end assets with npm steps or yarn steps.
- From the projects root folder run
npm install
- From the projects root folder run
npm run dev
ornpm run build
- You can lint assets with
npm run lint
- You can clean the syntax with
npm run clean
- From the projects root folder run
yarn install
- From the projects root folder run
yarn run dev
oryarn run build
- You can lint assets with
yarn run lint
- You can clean the syntax with
yarn run clean
- From the projects root folder run
php artisan config:cache
Password | |
---|---|
superadmin@superadmin.com | password |
admin@admin.com | password |
user@user.com | password |
- Facebook API (Will work with local dev callback)
- Twitter API
- Instagram API
- GitHub API (Will work with local dev callback)
- YouTube API
- Google API
- LinkedIn API (Will work with local dev callback)
- Twitch API (Will work with local dev callback)
- Microsoft API
- TikTok API
- Apple API
- ZoHo API (Will work with local dev callback)
- StackExchange API (Will work with local dev callback)
- GitLab API (Will work with local dev callback)
- Reddit API Register (Will work with local dev callback)
- Snapchat API
- Meetup API
- Atlassian
- See full list of providers: https://socialiteproviders.github.io
LaravelSpa
├── .editorconfig
├── .env.example
├── .eslintrc.js
├── .eslintrc.json
├── .gitattributes
├── .github
│  ├── FUNDING.yml
│  ├── dependabot.yml
│  ├── labeler.yml
│  └── workflows
│  ├── build-changelog.yml
│  ├── codacy.yml
│  ├── codeql.yml
│  ├── dependency-review.yml
│  ├── deploy.yml
│  ├── gitguardian.yml
│  ├── greetings.yml
│  ├── labeler.yml
│  ├── laravel.yml
│  ├── node.js.yml
│  ├── php.yml
│  ├── sentry.yml
│  └── stale.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── .scripts
│  └── deploy.sh
├── .styleci.yml
├── LICENSE
├── README.md
├── SECURITY.md
├── app
│  ├── Console
│  │  └── Kernel.php
│  ├── Exceptions
│  │  ├── Handler.php
│  │  └── SocialProviderDeniedException.php
│  ├── Http
│  │  ├── Controllers
│  │  │  ├── Admin
│  │  │  │  ├── AppSettingsController.php
│  │  │  │  ├── DashboardController.php
│  │  │  │  └── ServerInfoController.php
│  │  │  ├── Api
│  │  │  │  ├── ActivityLogController.php
│  │  │  │  ├── BrowserSessionController.php
│  │  │  │  ├── CategoryController.php
│  │  │  │  ├── PermissionsController.php
│  │  │  │  ├── PostController.php
│  │  │  │  ├── ProfileController.php
│  │  │  │  ├── RolesController.php
│  │  │  │  ├── UserController.php
│  │  │  │  └── UsersController.php
│  │  │  ├── Auth
│  │  │  │  ├── AuthenticatedSessionController.php
│  │  │  │  ├── ConfirmPasswordController.php
│  │  │  │  ├── ForgotPasswordController.php
│  │  │  │  ├── ImpersonateController.php
│  │  │  │  ├── LoginController.php
│  │  │  │  ├── PasswordController.php
│  │  │  │  ├── RegisterController.php
│  │  │  │  ├── ResetPasswordController.php
│  │  │  │  ├── SocialiteController.php
│  │  │  │  └── VerificationController.php
│  │  │  ├── Controller.php
│  │  │  └── HomeController.php
│  │  ├── Kernel.php
│  │  ├── Middleware
│  │  │  ├── Authenticate.php
│  │  │  ├── EncryptCookies.php
│  │  │  ├── PreventRequestsDuringMaintenance.php
│  │  │  ├── RedirectIfAuthenticated.php
│  │  │  ├── TrimStrings.php
│  │  │  ├── TrustHosts.php
│  │  │  ├── TrustProxies.php
│  │  │  ├── ValidateSignature.php
│  │  │  └── VerifyCsrfToken.php
│  │  ├── Requests
│  │  │  ├── Admin
│  │  │  │  ├── AdminDashboardRequest.php
│  │  │  │  ├── ShowAppSettingsRequest.php
│  │  │  │  ├── ShowServerInfoRequest.php
│  │  │  │  └── UpdateAppSettingsRequest.php
│  │  │  ├── Auth
│  │  │  │  ├── LoginRequest.php
│  │  │  │  └── RegisterRequest.php
│  │  │  ├── Categories
│  │  │  │  ├── DeleteCategoryRequest.php
│  │  │  │  ├── RestoreCategoryRequest.php
│  │  │  │  ├── ShowCategoryRequest.php
│  │  │  │  ├── StoreCategoryRequest.php
│  │  │  │  └── UpdateCategoryRequest.php
│  │  │  ├── Permissions
│  │  │  │  ├── CreatePermissionRequest.php
│  │  │  │  ├── GetPermissionsRequest.php
│  │  │  │  └── UpdatePermissionRequest.php
│  │  │  ├── Posts
│  │  │  │  ├── DeletePostRequest.php
│  │  │  │  ├── RestorePostRequest.php
│  │  │  │  ├── ShowPostRequest.php
│  │  │  │  ├── StorePostRequest.php
│  │  │  │  └── UpdatePostRequest.php
│  │  │  ├── Roles
│  │  │  │  ├── CreateRoleRequest.php
│  │  │  │  ├── GetUserRolesRequest.php
│  │  │  │  └── UpdateRoleRequest.php
│  │  │  ├── StoreRoleRequest.php
│  │  │  ├── StoreUserRequest.php
│  │  │  ├── UpdateProfileRequest.php
│  │  │  ├── User
│  │  │  └── Users
│  │  │  ├── CreateUserRequest.php
│  │  │  ├── DeleteUserRequest.php
│  │  │  ├── ImpersonateUserRequest.php
│  │  │  ├── LeaveImpersonateUserRequest.php
│  │  │  ├── RestoreUserRequest.php
│  │  │  ├── UpdateUserRequest.php
│  │  │  ├── VerifyUserRequest.php
│  │  │  └── ViewUserRequest.php
│  │  └── Resources
│  │  ├── ActivityLogs
│  │  │  ├── ActivityLogResource.php
│  │  │  └── ActivityLogsCollection.php
│  │  ├── Categories
│  │  │  ├── CategoryResource.php
│  │  │  └── GategoriesCollection.php
│  │  ├── Permissions
│  │  │  ├── PermissionResource.php
│  │  │  └── PermissionsCollection.php
│  │  ├── Posts
│  │  │  ├── PostResource.php
│  │  │  └── PostsCollection.php
│  │  ├── Roles
│  │  │  ├── RoleResource.php
│  │  │  └── RolesCollection.php
│  │  └── Users
│  │  ├── UserResource.php
│  │  └── UsersCollection.php
│  ├── Jobs
│  │  └── PersonalDataExportJob.php
│  ├── Mail
│  │  └── ExceptionOccured.php
│  ├── Models
│  │  ├── Category.php
│  │  ├── CategoryPost.php
│  │  ├── Impersonation.php
│  │  ├── Permission.php
│  │  ├── Post.php
│  │  ├── Role.php
│  │  ├── Setting.php
│  │  ├── SocialiteProvider.php
│  │  └── User.php
│  ├── Notifications
│  │  ├── PersonalDataExportedNotification.php
│  │  ├── ResetPasswordNotification.php
│  │  ├── SendActivationEmail.php
│  │  ├── SendGoodbyeEmail.php
│  │  ├── SendPasswordResetEmail.php
│  │  └── VerifyEmailNotification.php
│  ├── Providers
│  │  ├── AppServiceProvider.php
│  │  ├── AuthServiceProvider.php
│  │  ├── BroadcastServiceProvider.php
│  │  ├── EventServiceProvider.php
│  │  ├── RouteServiceProvider.php
│  │  └── ViewComposerServiceProvider.php
│  ├── Services
│  │  └── AppleToken.php
│  ├── Traits
│  │  ├── AppSettingsTrait.php
│  │  └── SocialiteProvidersTrait.php
│  └── View
│  └── Composers
│  ├── GaComposer.php
│  └── GaEnabledComposer.php
├── artisan
├── bootstrap
│  ├── app.php
│  ├── cache
│  │  ├── .gitignore
│  │  ├── packages.php
│  │  └── services.php
│  └── ssr
├── composer.json
├── composer.lock
├── config
│  ├── activitylog.php
│  ├── app.php
│  ├── auth.php
│  ├── broadcasting.php
│  ├── browser-sessions.php
│  ├── cache.php
│  ├── cors.php
│  ├── database.php
│  ├── debugbar.php
│  ├── exceptions.php
│  ├── filesystems.php
│  ├── hashing.php
│  ├── laravel-https.php
│  ├── laravel-page-speed.php
│  ├── laravelpwa.php
│  ├── logging.php
│  ├── mail.php
│  ├── media-library.php
│  ├── personal-data-export.php
│  ├── queue.php
│  ├── request-docs.php
│  ├── roles.php
│  ├── sanctum.php
│  ├── sentry.php
│  ├── services.php
│  ├── session.php
│  ├── settings.php
│  ├── sitemap.php
│  ├── users.php
│  └── view.php
├── database
│  ├── .gitignore
│  ├── factories
│  │  └── UserFactory.php
│  ├── migrations
│  │  ├── 0001_01_01_000000_create_users_table.php
│  │  ├── 0001_01_01_000001_create_cache_table.php
│  │  ├── 0001_01_01_000002_create_jobs_table.php
│  │  ├── 2014_10_00_000000_create_settings_table.php
│  │  ├── 2014_10_00_000001_add_group_column_on_settings_table.php
│  │  ├── 2014_10_12_100000_create_password_resets_table.php
│  │  ├── 2016_01_15_105324_create_roles_table.php
│  │  ├── 2016_01_15_114412_create_role_user_table.php
│  │  ├── 2016_01_26_115212_create_permissions_table.php
│  │  ├── 2016_01_26_115523_create_permission_role_table.php
│  │  ├── 2016_02_09_132439_create_permission_user_table.php
│  │  ├── 2019_12_14_000001_create_personal_access_tokens_table.php
│  │  ├── 2022_09_30_181156_create_posts_table.php
│  │  ├── 2022_09_30_181227_create_categories_table.php
│  │  ├── 2022_11_28_073632_create_socialite_providers_table.php
│  │  ├── 2022_12_06_061947_create_impersonations_table.php
│  │  ├── 2023_10_02_010617_create_category_post_table.php
│  │  ├── 2023_10_02_175025_create_media_table.php
│  │  ├── 2024_11_25_022836_create_permission_tables.php
│  │  ├── 2025_01_23_093055_create_activity_log_table.php
│  │  ├── 2025_01_23_093056_add_event_column_to_activity_log_table.php
│  │  └── 2025_01_23_093057_add_batch_uuid_column_to_activity_log_table.php
│  └── seeders
│  ├── AppSettingsSeeder.php
│  ├── ConnectRelationshipsSeeder.php
│  ├── DatabaseSeeder.php
│  ├── PermissionTableSeeder.php
│  ├── PermissionsTableSeeder.php
│  ├── RolesTableSeeder.php
│  └── UsersTableSeeder.php
├── eslint.config.js
├── lang
│  └── en
│  ├── auth.php
│  ├── emails.php
│  ├── pagination.php
│  ├── passwords.php
│  └── validation.php
├── package-lock.json
├── package.json
├── phpunit.xml
├── postcss.config.js
├── prettier.config.js
├── public
│  ├── .htaccess
│  ├── android-chrome-192x192.png
│  ├── android-chrome-512x512.png
│  ├── apple-touch-icon.png
│  ├── favicon-16x16.png
│  ├── favicon-32x32.png
│  ├── favicon.ico
│  ├── favicon.png
│  ├── images
│  │  └── placeholder.jpg
│  ├── index.php
│  ├── robots.txt
│  ├── serviceworker.js
│  ├── site.webmanifest
│  └── sw.js
├── resources
│  ├── css
│  │  ├── app.css
│  │  └── normalize.css
│  ├── img
│  │  ├── 404.png
│  │  ├── favicon
│  │  │  ├── android-chrome-192x192.png
│  │  │  ├── android-chrome-512x512.png
│  │  │  ├── apple-touch-icon.png
│  │  │  ├── favicon-16x16.png
│  │  │  ├── favicon-32x32.png
│  │  │  ├── favicon.ico
│  │  │  ├── favicon.png
│  │  │  └── site.webmanifest
│  │  ├── fonts
│  │  │  ├── Leckerli_One
│  │  │  │  ├── LeckerliOne-Regular.ttf
│  │  │  │  └── OFL.txt
│  │  │  ├── Nunito
│  │  │  │  ├── Nunito-Italic-VariableFont_wght.ttf
│  │  │  │  ├── Nunito-VariableFont_wght.ttf
│  │  │  │  ├── OFL.txt
│  │  │  │  ├── README.txt
│  │  │  │  └── static
│  │  │  │  ├── Nunito-Black.ttf
│  │  │  │  ├── Nunito-BlackItalic.ttf
│  │  │  │  ├── Nunito-Bold.ttf
│  │  │  │  ├── Nunito-BoldItalic.ttf
│  │  │  │  ├── Nunito-ExtraBold.ttf
│  │  │  │  ├── Nunito-ExtraBoldItalic.ttf
│  │  │  │  ├── Nunito-ExtraLight.ttf
│  │  │  │  ├── Nunito-ExtraLightItalic.ttf
│  │  │  │  ├── Nunito-Italic.ttf
│  │  │  │  ├── Nunito-Light.ttf
│  │  │  │  ├── Nunito-LightItalic.ttf
│  │  │  │  ├── Nunito-Medium.ttf
│  │  │  │  ├── Nunito-MediumItalic.ttf
│  │  │  │  ├── Nunito-Regular.ttf
│  │  │  │  ├── Nunito-SemiBold.ttf
│  │  │  │  └── Nunito-SemiBoldItalic.ttf
│  │  │  └── Quicksand
│  │  │  ├── OFL.txt
│  │  │  ├── Quicksand-VariableFont_wght.ttf
│  │  │  ├── README.txt
│  │  │  └── static
│  │  │  ├── Quicksand-Bold.ttf
│  │  │  ├── Quicksand-Light.ttf
│  │  │  ├── Quicksand-Medium.ttf
│  │  │  ├── Quicksand-Regular.ttf
│  │  │  └── Quicksand-SemiBold.ttf
│  │  ├── login.png
│  │  ├── login.webp
│  │  ├── plugs.png
│  │  └── vendor-logos
│  │  ├── vultr-1.webp
│  │  ├── vultr-2.png
│  │  ├── zoho-monocrome-black.png
│  │  └── zoho-monocrome-white.png
│  ├── js
│  │  ├── app.js
│  │  ├── bootstrap.js
│  │  ├── components
│  │  │  ├── LocaleSwitcher.vue
│  │  │  ├── ToggleDarkMode.vue
│  │  │  ├── admin
│  │  │  │  ├── CreateComp.vue
│  │  │  │  ├── EditComp.vue
│  │  │  │  └── IndexComp.vue
│  │  │  ├── auth
│  │  │  │  └── SocialiteLogins.vue
â”
BD48
‚  │  │  ├── common
│  │  │  │  ├── AdminMiniCard.vue
│  │  │  │  ├── AppButton.vue
│  │  │  │  ├── AppDeleteModal.vue
│  │  │  │  ├── AppModal.vue
│  │  │  │  ├── AppSwitch.vue
│  │  │  │  ├── AppTable.vue
│  │  │  │  ├── CKEditorComponent.vue
│  │  │  │  ├── CircleSvg.vue
│  │  │  │  ├── DropZone.vue
│  │  │  │  ├── ErrorsNotice.vue
│  │  │  │  ├── ImpersonateUser.vue
│  │  │  │  ├── LeaveImpersonation.vue
│  │  │  │  ├── LoadingCircle.vue
│  │  │  │  ├── NoRecordsCTA.vue
│  │  │  │  ├── PaginationComp.vue
│  │  │  │  ├── PerPage.vue
│  │  │  │  ├── SocialMediaLoginStatus.vue
│  │  │  │  ├── SocialMediaLoginStatusItem.vue
│  │  │  │  ├── SuccessNotice.vue
│  │  │  │  ├── TextEditorComponent.vue
│  │  │  │  ├── TinyMCEditor.vue
│  │  │  │  └── UmoEditor.vue
│  │  │  ├── form
│  │  │  │  ├── AppPasswordInput.vue
│  │  │  │  ├── AppSettingTextInput.vue
│  │  │  │  ├── AppSettingTextarea.vue
│  │  │  │  ├── AppSettingToggle.vue
│  │  │  │  └── AppTextInput.vue
│  │  │  ├── includes
│  │  │  │  ├── AdminBreadcrumb.vue
│  │  │  │  ├── AdminBreadcrumbContainer.vue
│  │  │  │  ├── AdminBreadcrumbSep.vue
│  │  │  │  ├── AdminNavBarLink.vue
│  │  │  │  ├── AdminNavbar.vue
│  │  │  │  ├── AdminSidebar.vue
│  │  │  │  ├── AdminSidebarLink.vue
│  │  │  │  ├── AppFooter.vue
│  │  │  │  ├── AppNav.vue
│  │  │  │  ├── BreadcrumbOld.vue
│  │  │  │  └── NavLink.vue
│  │  │  ├── loaders
│  │  │  │  └── AnimatedTableLoader.vue
│  │  │  ├── plugs
│  │  │  │  ├── BmcButtons.vue
│  │  │  │  ├── GHButton.vue
│  │  │  │  ├── GHButtons.vue
│  │  │  │  ├── OctoCat.vue
│  │  │  │  ├── PatreonButton.vue
│  │  │  │  └── VultrReferral.vue
│  │  │  ├── roles
│  │  │  │  ├── PermissionFormModal.vue
│  │  │  │  ├── RoleFormModal.vue
│  │  │  │  └── RolesBadges.vue
│  │  │  └── users
│  │  │  ├── UserForm.vue
│  │  │  └── UserFormModal.vue
│  │  ├── composables
│  │  │  ├── activityLogs.js
│  │  │  ├── auth.js
│  │  │  ├── categories.js
│  │  │  ├── darkmode.js
│  │  │  ├── posts.js
│  │  │  ├── profile.js
│  │  │  ├── roles.js
│  │  │  └── users.js
│  │  ├── lang
│  │  │  ├── bn.json
│  │  │  ├── en.json
│  │  │  ├── es.json
│  │  │  ├── fr.json
│  │  │  ├── pt-BR.json
│  │  │  └── zh-CN.json
│  │  ├── layouts
│  │  │  ├── AdminLayout.vue
│  │  │  ├── AuthenticatedLayout.vue
│  │  │  ├── ErrorLayout.vue
│  │  │  └── GuestLayout.vue
│  │  ├── plugins
│  │  │  └── i18n.js
│  │  ├── routes
│  │  │  ├── index.js
│  │  │  ├── middleware.js
│  │  │  └── routes.js
│  │  ├── services
│  │  │  ├── ability.js
│  │  │  ├── analytics.js
│  │  │  ├── asteroids.js
│  │  │  ├── common.js
│  │  │  ├── excanvas.js
│  │  │  ├── s-code.js
│  │  │  ├── s-code.min.js
│  │  │  └── utilities.js
│  │  ├── store
│  │  │  ├── auth.js
│  │  │  ├── index.js
│  │  │  ├── lang.js
│  │  │  ├── sidebar.js
│  │  │  └── toast.js
│  │  ├── validation
│  │  │  └── rules.js
│  │  └── views
│  │  ├── admin
│  │  │  ├── ActivityLog.vue
│  │  │  ├── AdminPage.vue
│  │  │  ├── AppSettings.vue
│  │  │  ├── BrowserSessions.vue
│  │  │  ├── DashboardPage.vue
│  │  │  ├── PermissionsPage.vue
│  │  │  ├── PhpInfo.vue
│  │  │  ├── RolesPage.vue
│  │  │  ├── UsersPage.vue
│  │  │  ├── categories
│  │  │  │  ├── CategoryIndex.vue
│  │  │  │  ├── CreateCategory.vue
│  │  │  │  └── EditCategory.vue
│  │  │  └── posts
│  │  │  ├── AdminCreatePost.vue
│  │  │  ├── AdminEditPost.vue
│  │  │  └── AdminPostsIndex.vue
│  │  ├── auth
│  │  │  ├── Verify.vue
│  │  │  └── passwords
│  │  │  ├── ConfirmPage.vue
│  │  │  ├── RequestReset.vue
│  │  │  └── ResetPage.vue
│  │  ├── category
│  │  │  └── CatPostsPage.vue
│  │  ├── errors
│  │  │  └── NotFound.vue
│  │  ├── home
│  │  │  └── HomePage.vue
│  │  ├── kiosk
│  │  ├── login
│  │  │  └── LoginPage.vue
│  │  ├── misc
│  │  │  ├── AboutPage.vue
│  │  │  ├── PricingPage.vue
│  │  │  ├── SupportPage.vue
│  │  │  └── TermsPage.vue
│  │  ├── pages
│  │  │  └── user-settings
│  │  │  ├── AccountAuthentication.vue
│  │  │  ├── AccountData.vue
│  │  │  ├── AccountPage.vue
│  │  │  ├── PasswordPage.vue
│  │  │  ├── ProfilePage.vue
│  │  │  ├── SettingsNav.vue
│  │  │  ├── SettingsNavLink.vue
│  │  │  ├── SettingsPage.vue
│  │  │  └── UserDownloadData.vue
│  │  ├── posts
│  │  │  ├── PublicIndex.vue
│  │  │  └── PublicPostDetails.vue
│  │  ├── register
│  │  │  └── RegisterPage.vue
│  │  └── templates
│  │  ├── Bare.vue
│  │  └── Blank.vue
│  ├── lang
│  ├── pwa
│  │  ├── serviceworker.js
│  │  └── sw.js
│  └── views
│  ├── app.blade.php
│  ├── auth
│  │  ├── login.blade.php
│  │  ├── passwords
│  │  │  ├── confirm.blade.php
│  │  │  ├── email.blade.php
│  │  │  └── reset.blade.php
│  │  ├── register.blade.php
│  │  └── verify.blade.php
│  ├── home.blade.php
│  ├── layouts
│  │  ├── app.blade.php
│  │  └── master.blade.php
│  └── socialite
│  ├── callback.blade.php
│  └── denied.blade.php
├── routes
│  ├── api.php
│  ├── channels.php
│  ├── console.php
│  └── web.php
├── tailwind.config.js
├── tailwindcss-perspective.js
├── vite.config.js
└── vue.config.js
105 directories, 437 files
- Tree command can be installed using brew:
brew install tree
- File tree generated using command
tree -a -I '.git|node_modules|vendor|build|storage|tests|.DS_Store|.env'
Laravel-Spa is licensed under the MIT license. Enjoy!