firumon/digital-business-card
Digital Business Card app built with Quasar (Vue). Install dependencies with yarn or npm, run a hot-reload dev server with quasar dev, and build production assets with quasar build. Configure via quasar.config.js.
Clone & Install
git clone https://github.com/firumon/digital-business-card.git
cd digital-business-card
yarn install
Laravel Integration
dist/spa/) in Laravel’s public/digital-business-card/ (or use a CDN).routes/web.php:
Route::get('/digital-business-card', function () {
return view('digital_business_card');
})->name('digital_business_card');
resources/views/digital_business_card.blade.php):
<!DOCTYPE html>
<html>
<head>
<title>Digital Business Card</title>
<link href="{{ asset('digital-business-card/css/index.css') }}" rel="stylesheet">
</head>
<body>
<div id="q-app"></div>
<script src="{{ asset('digital-business-card/js/app.js') }}"></script>
</body>
</html>
First Use Case
quasar dev).<script>
window.digitalBusinessCardData = @json($userData);
</script>
Laravel ↔ Quasar Data Flow
view()->share() or Blade variables to pass data to the frontend:
view()->share('user', auth()->user());
window.Laravel or a global object:
// Quasar component (e.g., src/pages/Index.vue)
export default {
data() {
return {
user: window.digitalBusinessCardData.user,
};
},
};
API-Driven Updates
// Quasar component
async fetchUserData() {
const response = await axios.get('/api/user');
this.user = response.data;
},
Authentication Integration
// Quasar login logic
async login() {
const response = await axios.post('/api/login', {
email: this.email,
password: this.password,
});
this.$q.localStorage.set('token', response.data.token);
},
Route::fallback() for SPA behavior:
Route::fallback(function () {
return view('digital_business_card');
});
app.scss:
// Override Quasar colors
:root {
--primary: #{{ config('digital_business_card.primary_color') }};
}
CORS Issues
fruitcake/laravel-cors) is configured:
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['http://localhost:8080'], // Quasar dev server
Asset Paths in Production
quasar build generates assets in dist/spa/. Ensure Laravel’s public folder symlinks or copies these files:
ln -s /path/to/digital-business-card/dist/spa /path/to/laravel/public/digital-business-card
Hot-Reloading Conflicts
quasar dev and Laravel’s Vite/HMR may conflict. Use separate ports or disable one during development.storage/logs/laravel.log for API/route errors.Custom Components
src/components/ with reusable Laravel-integrated components (e.g., ContactForm.vue):
<template>
<q-form @submit="submitForm">
<q-input v-model="email" label="Email" />
<q-btn type="submit">Submit</q-btn>
</q-form>
</template>
<script>
export default {
methods: {
async submitForm() {
await axios.post('/api/contacts', { email: this.email });
},
},
};
</script>
Laravel Service Providers
// app/Providers/AppServiceProvider.php
public function boot() {
config(['digital_business_card.primary_color' => '#42b983']);
}
WebSocket Integration
// Quasar component
import Echo from 'laravel-echo';
const echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
});
echo.channel('notifications')
.listen('NotificationEvent', (data) => {
this.$q.notify(data.message);
});
How can I help you explore Laravel packages today?